0

以下は、リストビューを設定するための私のコードです。リストビューにクリックイベントを実装したいのですが、機能しません。マニフェストのリストビューにクリック可能な属性を設定しました。また、私のリストビューは相対レイアウト内にあり、この相対レイアウトは線形レイアウトにあります。私のlist_detailsには、相対レイアウトのtextviewとimageviewがあります。これを理解するのを手伝ってくれませんか。前もって感謝します。

public class ListImageBaseAdapter extends BaseAdapter {
...

public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
    if (convertView == null) {
        convertView = l_Inflater.inflate(R.layout.list_details, null);
        holder = new ViewHolder();
        holder.txt_itemName = (TextView) convertView.findViewById(R.id.name);
        holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

        System.out.println(titles.length);

        holder.txt_itemName.setText(titles[position]);
        holder.itemImage.setImageResource(imgid[position]);

            holder.itemImage.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            System.out.println("here1");
        }
    });

    holder.txt_itemName.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            System.out.println("here2");
        }
    });


    return convertView;
}
...
4

3 に答える 3

1

いくつかのオプションがあります。

getView()メソッド内でconvertViewを返す前に、リスナーを適用できます。このような:

public View getView(int position, View convertView, ViewGroup parent) {
    .....
    convertView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        }
    });

    return convertView;
}

または(@DheereshSinghが述べたように)これは、ListViewを格納するアクティビティ内の1つ上のレベルから実行できます。

ListView lv = (ListView)findViewById(R.id.listView);
lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

    }
}); 
于 2012-06-15T13:18:52.760 に答える
1
 I want to implement a click event on the listview, but it is not working. 

2つのことを確認してください

1-この方法でリストをクリックして実装しましたか?

 list.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        // @todo
                }
        }); 

2-リスト行にクリック可能なアイテムがありますか?はいの場合は参照してください

Android:複数のクリック可能なボタンを備えたListView要素

http://mylifewithandroid.blogspot.in/2011/08/focus-problems-with-list-rows-and.html

行のアイテムのクリックを処理するため:

1- Imaplent you activity with View.OnClickListener
2- Pass it to adpter 
3- holder.itemImage.setOnClickListener(mActivity)
4- override the View.OnClickListener in activity 
于 2012-06-15T13:11:35.323 に答える
0

リストビューを使用している場合は、いつでもDheereshの方法を使用できます。

オンクリックを探しているだけの場合は、

View view = convertView;
view.setTag(position);//Sets a position
view.setonclicklistener(new OnClickListener){//creates a onClicklistener for tag

public void onClick(View v){
//Do something
}

}

これをグリッドビューに使用することもできます。

余分なことをしたい場合は、baseadapterの各アイテムを実際に設定して、クリックイベントを設定し、毎回異なることを行うことができます。

于 2012-06-15T13:52:25.177 に答える