我在每个项目中都有两个设置为不可见的按钮。我想,当用户点击某个项目时,该项目中的按钮才会变为可见。
我在列表视图中使用自定义适配器...
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;
}
}
任何人都可以请我就我如何做到这一点提出想法?
答案 0 :(得分:0)
您需要在OnItemClickListener
上设置ListView
并更改Buttons
内onItemClick()
的可见度。
另请注意,您当前的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();
你完成了