想要在列表视图中单击的项目中查看某些内容

时间:2015-04-22 17:49:48

标签: java android listview layout

我在每个项目中都有两个设置为不可见的按钮。我想,当用户点击某个项目时,该项目中的按钮才会变为可见。

我在列表视图中使用自定义适配器...

public class LocationAdapter extends BaseAdapter{
    String [] n;
    Context context;
    String[] a;
    int bint = View.INVISIBLE;

    private static LayoutInflater inflater=null;
    public LocationAdapter(MainActivity mainActivity, String[] names, String[] addresses, int bint) {
        // TODO Auto-generated constructor stub
        this.bint = bint;
        n=names;
        context=mainActivity;
        a=addresses;
        inflater = ( LayoutInflater )context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return n.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    public class Holder
    {
        TextView name;
        TextView address;
        Button b1;
        Button b2;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        Holder holder=new Holder();
        View rowView;
        rowView = inflater.inflate(R.layout.rowlayout2, null);
        holder.name =(TextView) rowView.findViewById(R.id.EditTextName);
        holder.address =(TextView) rowView.findViewById(R.id.EditTextAddress);
        holder.b1 = (Button) rowView.findViewById(R.id.Edit);
        holder.b2 = (Button) rowView.findViewById(R.id.Delete);
        holder.b1.setVisibility(bint);
        holder.b2.setVisibility(bint);
        holder.name.setText(n[position]);
        holder.address.setText(a[position]);
        rowView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(context, "You Clicked "+n[position], Toast.LENGTH_LONG).show();
            }

        });
        return rowView;
    }
}

任何人都可以请我就我如何做到这一点提出想法?

3 个答案:

答案 0 :(得分:0)

您需要在OnItemClickListener上设置ListView并更改ButtonsonItemClick()的可见度。

另请注意,您当前的LocationAdapter实施不会检查if(convertView == null),也不会将ViewHoler设置为行View的标记。

答案 1 :(得分:0)

你只能为视图对象及其子元素设置onclicklistener ....所以要么你实现自己的API,你有一个与标准onclicklistener相同的方法,但你可以在你想要的每个对象上设置它。 ..非常有趣的imho ...

或者您使用textviews等视图,然后在它们上设置onclicklistener !!!

答案 2 :(得分:0)

这是你可以尝试的 将onclicklsitener添加到buttom而不是整个视图。要应用的内部按钮xml单击侦听器添加以下两行

android:focusable="false"
android:focusableInTouchMode="false"

现在将监听器应用于按钮,如下所示

    holder.button.setOnClickListener(new OnClickListener()
      {
          @Override
          public void onClick(View v)
          {
              //set visibility of items here
              holder.buttonedit.setVisibility(View.GONE);
              holder.buttonedit.setVisibility(View.VISIBLE);

          }
      });

内部getview方法声明持有者最终

final Holder holder=new Holder();

你完成了