0

そのチェックボックスにカスタムリストビューがあり、テキストビューが存在します..

行1のチェックボックスをクリックすると、その行のチュークボックスのみがチェックされます。2行目をクリックすると、2行目のチェックボックスが選択され、1行目が選択解除されます.3行目をクリックすると、3行目のチェックボックスが選択され、2行目が選択解除されます...

そのため、特定の行のクリック項目のチェックボックスのみを選択する必要があります...

しかし、ここではすべてのチェックボックスが選択されています...これを解決する方法..

パッケージcom.example.testdata;

public class Newcard extends Activity {
 MyAdapter adapter; 
CheckBox check=null;
ListView listView;
LayoutInflater lay;
MyApplication app;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

setContentView(R.layout.newcard);
app = ((MyApplication) getApplicationContext());

listView = (ListView) findViewById(R.id.cardlist);

adapter =new MyAdapter(this, app.arryList);

listView.setAdapter(adapter);

 listView.setChoiceMode(listView.CHOICE_MODE_SINGLE);
}

public class MyAdapter extends BaseAdapter {

Context context = null;
 ArrayList<String> items= null;

public MyAdapter(Newcard newcard, ArrayList<String> items,
    ArrayList<String> items1) {
// TODO Auto-generated constructor stub     
this.items = items;         
}

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

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

}

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

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

View layout = null;
TextView produ = null;  

TextView desc = null;
Button edit = null;



if (convertView == null) {

    lay = LayoutInflater.from(getApplicationContext());
    layout = lay.inflate(R.layout.customlist, null);
} else {
    layout = convertView;
}

produ = (TextView) layout.findViewById(R.id.card);
produ.setText("" +app.arryList.get(position));

check = (CheckBox) layout.findViewById(R.id.radioButton1);

check.setOnClickListener(new OnClickListener() {

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

    //  System.out.println("data "+app.arryList.get(position)); 

    }
});

return layout;

}

}

}

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<CheckBox
      android:id="@+id/radioButton1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerVertical="true"
      android:layout_alignParentLeft="true"
      android:text=""
     
       />

  <TextView
      android:id="@+id/card"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:paddingLeft="10dip" android:layout_centerVertical="true"
      android:layout_toRightOf="@+id/radioButton1"
      android:text=""
      android:textColor="#000000"
      android:textSize="15dip"
      android:textStyle="bold" />

  </RelativeLayout>
4

1 に答える 1

0

上記のコードは完全ではありません。フォーム/チェックボックスを作成する場所がわかりません。しかし、次の行check = (CheckBox) layout.findViewById(R.id.radioButton1); が表示されます。おそらく、ラジオボタンを使用してチェックボックスにキャストしていますか? ラジオボタンは、行動など、複数のオプションから 1 つだけを選択するために使用されます。問題を解決するには、ラジオ ボタンではなくチェックボックスを作成したことを確認する必要があります。

于 2013-03-15T07:58:13.970 に答える