2016-04-20 10 views
0

アンドロイドリストビューのオンリック機能を実装しようとしましたが、何かが機能しないようです。私はインターネット上でいくつかのソリューションを見つけようとしましたが、イメージビューとテキストビュー要素のフォーカス可能なプロパティを変更することが推奨されていました。それを試して、それは動作しませんでした。皆さんが他の選択肢を推奨できるのであれば、どうかありがたいです。なぜListView onClickが機能しないのですか?

レイアウトは、上記に加えて

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_gravity="center" 
       android:id="@+id/rootItemId" 
       android:clickable="true" 
       android:gravity="center_vertical"> 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:focusable='false' 
     android:background="@drawable/frame"> 

     <ImageView 
      android:id="@+id/ivIcon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:contentDescription="@string/hello_world" 
      android:padding="5dp" 
      android:focusable='false' 
      android:src="@drawable/ic_launcher" 
      android:scaleType="fitXY"/> 

     <RelativeLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      android:focusable='false' 
      android:layout_toRightOf="@id/ivIcon"> 

      <TextView 
       android:id="@+id/tvTitle" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:focusable='false' 
       android:textAppearance="@android:style/TextAppearance.Medium"/> 

     </RelativeLayout> 

    </RelativeLayout> 

</RelativeLayout> 

リスト断片

public class EventsListFragment extends ListFragment{ 

    ArrayList<Event> eventsChildren; 
    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     Log.e("RedditListingsClick",position + " " + id); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     eventsChildren = new ArrayList<Event>(); 
     EventsChildAdapter adapter = new EventsChildAdapter(inflater.getContext(), eventsChildren); 
     setListAdapter(adapter); 
     return super.onCreateView(inflater, container, savedInstanceState); 
    } 
} 

リストアダプタ

public class EventsChildAdapter extends ArrayAdapter<Event> { 

    Context context; 
    RelativeLayout root; 
    private static class ViewHolder { 
     TextView title; 
     ImageView thumbnail; 
    } 

    public EventsChildAdapter(Context context, ArrayList<Event> eventsChildren) { 
     super(context, R.layout.item_listing, eventsChildren); 
     this.context = context; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // Get the data item for this position 
     Event child = getItem(position); 

     // Check if an existing view is being reused, otherwise inflate the view 
      ViewHolder viewHolder; // view lookup cache stored in tag 
      if (convertView == null) { 
       viewHolder = new ViewHolder(); 
       LayoutInflater inflater = LayoutInflater.from(getContext()); 
       convertView = inflater.inflate(R.layout.item_listing, null); 
       //root=(RelativeLayout)convertView.findViewById(R.id.rootItemId); 

       viewHolder.title = (TextView) convertView.findViewById(R.id.tvTitle); 
       //viewHolder.thumbnail = (ImageView) convertView.findViewById(R.id.ivIcon); 

       convertView.setTag(viewHolder); 
      } else { 
       viewHolder = (ViewHolder) convertView.getTag(); 
      } 
      // Populate the data into the template view using the data object 
      System.out.println(child.getTitle()); 
      viewHolder.title.setText(child.getTitle()); 

      Picasso.with(this.context).load(child.getThumbnailImageURL()).resize(200, 100).into(viewHolder.thumbnail); 

     // Return the completed view to render on screen 
      return convertView; 
    } 
} 

をitem.xml、Iはすでにアンドロイドを追加しようとしている:descendantFocusability = "blocksDescendants "relativelayoutしかし、まだ動作しませんでした。最後に、私は、relativelayoutをクリック可能にして、他の要素からフォーカスを取り除こうとしましたが、これもうまくいきませんでした。

+0

あなたはリストビューの画像を取得しているがonActivityCreated ?? –

+0

このリンクをチェックするhttp://stackoverflow.com/questions/21295328/android-listview-with-onclick-items –

+0

@DemoMailはい私はリストビューで画像を取得しています。 – user3200361

答えて

1

あなたはこれを試すことができます。

public class EventsListFragment extends ListFragment implement OnItemClickListener { 
... 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position,long id) { 
    // the child callback here. 
} 
} 

及びこれをでは

setListAdapter(Your adapter); 
getListView().setOnItemClickListener(this); 
+0

どこでonActivityCreatedを作成しますか? getListView()。setOnItemClickListener(this);エラーを起こすでしょうか? :) – user3200361

+0

onCreateViewを使用している場合は、onCreateView() –

関連する問題