gpt4 book ai didi

android - 将自定义 ListView 与 TextView 和 CheckBox 一起使用,并单选 CheckBox

转载 作者:行者123 更新时间:2023-12-02 16:42:06 25 4
gpt4 key购买 nike

听说我将自定义ListViewTextViewCheckBox一起使用。但我希望一次在复选框中进行单一选择选中一个 CheckBox,然后取消选择另一个使用 BaseAdapter但这段代码不能正常工作..请给我建议..thnks

@Override
public View getView(final int position, View view, ViewGroup parent) {
Integer selected_position = -1;
holder = new ViewHolder();
final Items itm = rowItem.get(position);
LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (view == null) {

view = layoutInflater.inflate(R.layout.activity_custom_list,
parent, false);

holder.tvItemName = (TextView) view.findViewById(R.id.textView1);
holder.check = (CheckBox) view.findViewById(R.id.checkBox1);
view.setTag(holder);

} else {
holder = (ViewHolder) view.getTag();
}

holder.tvItemName.setText(itm.getItems());

if (position == selected_position)
holder.check.setChecked(true);
else
holder.check.setChecked(false);

holder.check.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

if (holder.check.isChecked()) {
selected_position = position;
} else {
selected_position = -1;
}
notifyDataSetChanged();

}
});

return view;
}}

最佳答案

使用带有 TextView 的自定义 ListView 和带有单选复选框的复选框经过多次尝试,最后我得到了解决方案,我希望它对你们所有人都是有用的代码......此代码帮助您创建带有 TextView 和复选框的自定义 ListView ,然后选择一个复选框,如果您选择另一个复选框,则第一个应自动取消选择......谢谢...

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.listviewdemo2.MainActivity" >

<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
</RelativeLayout>

activity_custom_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.listviewdemo2.CustomListActivity" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/darker_gray" >

<TextView
android:id="@+id/textView1"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="4dp"
android:layout_weight="0.39"
android:textAppearance="?android:attr/textAppearanceMedium" />

<CheckBox
android:id="@+id/checkBox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="150dp"
android:layout_marginTop="4dp"/>
</LinearLayout> </LinearLayout>

String.xml

<string-array name="name">
<item>Laptop</item>
<item>Mobile</item>
<item>Desktop</item>
<item>TV</item>
<item>Pendrive</item>
<item>Router</item>
<item>Notebook</item>
<item>Tablet</item>
<item>I-pad</item>
<item>Bluetooth</item>
<item>HomeTheator</item>
</string-array>

MainActivity.java

String[] ItemName;
List<Items> rowItem;
ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rowItem = new ArrayList<Items>();
ItemName = getResources().getStringArray(R.array.name);

for(int i = 0 ; i < ItemName.length ; i++)
{
Items itm = new Items(ItemName[i]);
rowItem.add(itm);
}

list = (ListView) findViewById(R.id.listView1);
CustomListActivity adapter = new CustomListActivity(this, rowItem);
list.setAdapter(adapter);
}

Items.java

公开课项目{

private String items;
private boolean selected;


public Items(String items) {

this.items = items;

}

public String getItems() {

return items;
}

public void setItemName(String name) {

this.items = name;
}
public boolean getSelected() {
return selected;
}

public boolean setSelected(Boolean selected) {
return this.selected = selected;
}}

CustomListActivity.java

public class CustomListActivity extends BaseAdapter {

Context context;
List<Items> rowItem;
View listView;
boolean checkState[];

ViewHolder holder;

public CustomListActivity(Context context, List<Items> rowItem) {

this.context = context;
this.rowItem = rowItem;
checkState = new boolean[rowItem.size()];

}

@Override
public int getCount() {

return rowItem.size();
}

@Override
public Object getItem(int position) {

return rowItem.get(position);

}

@Override
public long getItemId(int position) {

return rowItem.indexOf(getItem(position));

}

public class ViewHolder {
TextView tvItemName;
CheckBox check;
}

@Override
public View getView(final int position, View view, ViewGroup parent) {

holder = new ViewHolder();
final Items itm = rowItem.get(position);
LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

if (view == null) {

listView = new View(context);
listView = layoutInflater.inflate(R.layout.activity_custom_list,
parent, false);

holder.tvItemName = (TextView) listView
.findViewById(R.id.textView1);
holder.check = (CheckBox) listView.findViewById(R.id.checkBox1);
listView.setTag(holder);

} else {
listView = (View) view;
holder = (ViewHolder) listView.getTag();
}

holder.tvItemName.setText(itm.getItems());

holder.check.setChecked(checkState[position]);

holder.check.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

for(int i=0;i<checkState.length;i++)
{
if(i==position)
{
checkState[i]=true;
}
else
{
checkState[i]=false;
}
}
notifyDataSetChanged();

}
});
return listView;
}}

显示输出:-

enter image description here

关于android - 将自定义 ListView 与 TextView 和 CheckBox 一起使用,并单选 CheckBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34940938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com