Android:ListView自定义单元格 - 知道哪个项目



我有一个自定义表单元格,基本上有2个按钮,一个文本视图和一个编辑文本。每个编辑文本旁边有一个加号和负按钮。有效地增加/减少文本框中的数字。

我无法弄清楚如何将按钮链接到正确的文本框。IE。当我按Plus时,请使用一个例程,仅适用于其行中的EditText框。我是否必须为每个文本框设置自定义ID?

我的所有文本都可以正确出现。

我的自定义单元格是:

<TextView
    android:id="@+id/txtOption"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_weight="0.00"
    android:text="Medium Text"
    android:textAppearance="?android:attr/textAppearanceMedium" />
<Button
    android:id="@+id/btnPlus"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="49dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/txtOption"
    android:layout_weight="0.00"
    android:text="+" />
<Button
    android:id="@+id/btnMinus"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="49dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/btnPlus"
    android:layout_alignBottom="@+id/btnPlus"
    android:layout_toRightOf="@+id/btnPlus"
    android:layout_weight="0.00"
    android:text="-" />
<EditText
    android:id="@+id/tbAnswer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/btnMinus"
    android:layout_toRightOf="@+id/btnMinus"
    android:ems="10"
    android:inputType="number" >
    <requestFocus />
</EditText>

我的自定义单元格被称为:

    class CustomAdapter extends BaseAdapter
    {
    @Override
    public int getCount() {
        return mDescription.size();
    }
    @Override
    public Object getItem(int arg0) {
        return null;
    }
    @Override
    public long getItemId(int arg0) {
        return 0;
    }
    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
        LayoutInflater inf=getLayoutInflater();
        View v=inf.inflate(R.layout.noncriticalasset, arg2,false);
        Button btPlus=(Button)v.findViewById(R.id.btnPlus);
        Button btMinus=(Button)v.findViewById(R.id.btnMinus);
        TextView tv=(TextView)v.findViewById(R.id.txtOption);
        EditText et=(EditText)v.findViewById(R.id.tbAnswer);
        tv.setText(mDescription.get(arg0).toString()); 

        return v;
    }

}

我还必须将所有文本框中的所有信息整理,并为每个文本编写一个查询。我有一个适合每个的提交按钮吗?(是否创建了自动阵列或类似的自动阵列?)

tom

您只需要添加侦听器,这是如何为每个项目中的按钮分配侦听器的示例:

@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
  btPlus.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {

     }
  });
  return v;
}

这是您需要的吗?

在按钮的onclick()中使用

@Override
    public void onClick(View v) {
            try {
                position = listview
                        .getPositionForView((View) v.getParent()); // position is an integer variable which helps you identify which item's plus button  was clicked
                Log.v("Position id", "" + position);
                // do some manipulations 
                notifyDataSetChanged();
            } catch (Exception e) {
                Log.e("error", "error" + e.getMessage());
            }
            break;

最新更新