0

这是我的 ArrayAdapter:

public class ListArrayAdapter extends ArrayAdapter<String>  {


    public ArrayList<String> links = new ArrayList<String>();
    public Activity activity = new Activity();
     TextView linkText;
     TextView linkDesc;

    public Context c;
    public ListArrayAdapter(Context context, int textViewResourceId,
            ArrayList<String> fiokiList, Object o) {

        super(context, textViewResourceId, fiokiList);
        this.links = fiokiList;
        activity = (Activity) (o);
        c = context;
        //notifyDataSetChanged();

    } 

    public View getView(final int position, View convertView, ViewGroup parent) {
        View v = convertView; 
        if (convertView == null) {
            convertView = LayoutInflater.from(getContext()).inflate(
                    R.layout.list_item, parent, false);



            convertView.setOnClickListener(new OnClickListener() {



                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                         Toast.makeText(activity, String.valueOf(position), Toast.LENGTH_LONG).show();
                    }
                });

        }  

        final String link = this.links.get(position);


        linkText  = (TextView) convertView.findViewById(R.id.linkTitle0001);
    //  linkImageView = (SmartImageView) convertView.findViewById(R.id.faviconView0001);
        linkText.setText(link); 


        //ImageView imgView = (ImageView)convertView.findViewById(R.id.imageView1);

    //  PieMenu pieMenu = new PieMenu(imgView, activity);
        //fl.addView(pieMenu);  



        return convertView; 



    }

}

我了解如何为 listView 的整个项目编写 onClickListener?我了解如何为每个项目编写一个,但我不知道如何为视图做一个?

4

3 回答 3

3

删除您在适配器中所做的并将此代码添加到您调用adatper的主要活动中

setOnItemClickListener

是您应该调用的函数。

list_view.setOnItemClickListener(new OnItemClickListener() {

@Override
  public void onItemClick(AdapterView<?> arg0,View arg1, int position, long arg3) {
// TODO Auto-generated method stub

    }
});
于 2013-08-23T18:11:08.277 回答
0

我的理解是,如果我没记错的话,你想为每个 Single ListView 行内的视图设置 onClickListener() 。如果这是真的,那么您只需要OnCliCkListener()在 getView() 方法中进行设置。

示例:您在

if (convertView == null) {

                convertView = inflater.inflate(R.layout.single_row_home, null);

                tv_title = (TextView) convertView
                        .findViewById(R.id.textViewSingleRowHomeTitle);
                tv_time = (TextView) convertView
                        .findViewById(R.id.textViewSingleRowHomeTime);
                iv_checkbox = (ImageView) convertView
                        .findViewById(R.id.imageViewSingleRowHomeCheckbox);

                convertView.setTag(new TaskViewHolder(tv_title, tv_time,
                        iv_checkbox));

            } else {

                TaskViewHolder viewHolder = (TaskViewHolder) convertView
                        .getTag();
                tv_title = viewHolder.get_tv_task_title();
                tv_time = viewHolder.get_tv_task_time();
                iv_checkbox = viewHolder.get_iv_task_checkbox();
            }

在此之后,您可以设置OnClickListener()如下:

tv_title.setClickable(true);
tv_title.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                }
            });

如果您想要 ListView 行内视图的单击事件,则需要在自定义适配器的getView()方法中实现它,否则您的 ListView 的 onItemClickListenerOnCreate()只能在内部实现。

于 2013-08-23T18:14:30.463 回答
0

你的意思是点击列表视图时的事件吗?如果是,请使用这个::

name of your listview.setOnItemClickListener(new AdapterView.OnItemClicklistener(){
@override
public void onItemClick(AdapterView<?> adapter,View view,int position,long id){
//event up to you 
//my event is
Toast.makeText(Context,text,duration)
}

});
于 2013-08-23T18:25:40.530 回答