簡體   English   中英

在自定義ListView中的項目(例如TextViews,Images,Buttons)上添加itemClickListener

[英]adding itemClickListener on items e.g.(TextViews, Images, Buttons) within in a customized ListView

我們可以在自定義ListView內的項目(例如TextViews,Images,Buttons)上添加itemClickLIstener嗎? 如是? 然后我們將在其中編寫偵聽器代碼

當然..您可以通過兩種方式添加它

1)。 通過在xml文件中定義函數並在自定義適配器類的getview或bindview中定義這些函數。

2)。 或通過在自定義適配器類的bindview或getview中定義onclick偵聽器。

    @Override
public View getView(int position, View view, ViewGroup parent) {

    if (view == null) {
        Button btn = (Button) view.findViewById(R.id.btn);
        btn.setOnClickListener(new OnClickListener() {

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

            }
        });
    }

    return view;

}

您可以在自定義ListView中定義的Items上添加onClickListeners。 請參考以下代碼

holder.txtIncident.setOnClickListener

public View getView(final int position, View convertView,
            ViewGroup parent) {

        final ViewHolder holder;
        if (convertView == null) {
            convertView = l_Inflater.inflate(R.layout.headline_item, null);
            holder = new ViewHolder();

            holder.txtIncident = (TextView) convertView
                    .findViewById(R.id.txtIncident);

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

        holder.txtIncident.setText(String.valueOf(itemList.get(position)
                .getIncident()));

        holder.txtIncident.setOnClickListener(new OnClickListener() {

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

            }
        });
        return convertView;
    }

是的,您可以為每個列表項中的組件創建偵聽器。 您可以通過創建一個自定義列表適配器並在其getView方法中設置偵聽器來做到這一點。

    public class MyAdapter extends ArrayAdapter<String> {

        private int resourceId;
        private String[] objects;

        public MyAdapter(Context context,  int resourceId, String[] objects) {
           super(context, resourceId,objects);
           this.resourceId = resourceId;
           this.objects = objects;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(resourceId, null);
            }

            //Make sure that you use convertView.findViewById and not just findViewById!
            TextView textView1 = convertView.findViewById(R.id.yourTextViewsId);
            textView1.setText(objects[position]);
            textView1.setOnClickListener(new View.OnClickListener(){

                @Override
                public void onClick(View view) {
                    //do something here
                }
            });

            return convertView;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM