单击列表中某个位置的一个视图和不同位置自动工作的其他视图?
Click on one view in a position in List and other view at different position automatic working?
我在带有基本适配器的列表中使用自定义复选框。
问题是,当我点击一个未选中的复选框时,另一个复选框会自动被取消选中。
假设我在第 0 个位置单击一个复选框,然后另一个第 5 个位置的复选框将自动取消选中。
public View getView( int position, View convertView, ViewGroup parent) {
final ViewHolder holder = new ViewHolder();
if (convertView == null) {
convertView = mInflater.inflate(R.layout.socket_layer, null);
}
holder.checkBox = (ImageView) convertView.findViewById(R.id.checkBox_SocketFilter);
holder.filter_name=(TextView)convertView.findViewById(R.id.filter_name);
holder.filter_name.setText(rowItems.get(position));
holder.checkBox.setTag(position);
holder.onoff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
if(!selectedItems.get(position)){
selectedItems.put(position,true);
if(PrefUtils.socketCheck[position].equals(true))
{
holder.onoff.setImageResource(R.drawable.offf);
PrefUtils.socketCheck[position]=false;
selectedItems.delete(position);
}
else if(PrefUtils.socketCheck[position].equals(false)){
holder.onoff.setImageResource(R.drawable.onnn);
PrefUtils.socketCheck[position]=true;
selectedItems.delete(position);
}
}else{
selectedItems.delete(position);
}
}
});
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
请帮助我。
像这样修改你的代码。
在设置点击监听之前,在onOff按钮中添加位置作为标签
holder.onoff.setTag(position);
并在onClick()
int position = (Integer) v.getTag();
然后在onClick()
中使用这个位置变量进行运算。
我已经使用这段代码取消选中一些 checkbox.You 可以试一试:
我的 XMl 文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.sudiproy.checkboxtutorial.MainActivity">
<CheckBox
android:id="@+id/ch_android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="android"/>
<CheckBox
android:id="@+id/ch_ios"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="iOS"/>
<CheckBox
android:id="@+id/ch_windows"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Windows"/>
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit" />
</LinearLayout>
这是我的 Java 文件:
package com.example.sudiproy.checkboxtutorial;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
public class MainActivity extends AppCompatActivity {
private CheckBox chAndroid,chiOS,chWindows;
private Button submit;
private CheckBox checkBox1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chAndroid= (CheckBox) findViewById(R.id.ch_android);
chiOS= (CheckBox) findViewById(R.id.ch_ios);
chWindows=(CheckBox) findViewById(R.id.ch_windows);
submit= (Button) findViewById(R.id.submit);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(chAndroid.isChecked()){
chWindows.setChecked(false);
}
}
});
}
}
我在带有基本适配器的列表中使用自定义复选框。
问题是,当我点击一个未选中的复选框时,另一个复选框会自动被取消选中。
假设我在第 0 个位置单击一个复选框,然后另一个第 5 个位置的复选框将自动取消选中。
public View getView( int position, View convertView, ViewGroup parent) {
final ViewHolder holder = new ViewHolder();
if (convertView == null) {
convertView = mInflater.inflate(R.layout.socket_layer, null);
}
holder.checkBox = (ImageView) convertView.findViewById(R.id.checkBox_SocketFilter);
holder.filter_name=(TextView)convertView.findViewById(R.id.filter_name);
holder.filter_name.setText(rowItems.get(position));
holder.checkBox.setTag(position);
holder.onoff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
if(!selectedItems.get(position)){
selectedItems.put(position,true);
if(PrefUtils.socketCheck[position].equals(true))
{
holder.onoff.setImageResource(R.drawable.offf);
PrefUtils.socketCheck[position]=false;
selectedItems.delete(position);
}
else if(PrefUtils.socketCheck[position].equals(false)){
holder.onoff.setImageResource(R.drawable.onnn);
PrefUtils.socketCheck[position]=true;
selectedItems.delete(position);
}
}else{
selectedItems.delete(position);
}
}
});
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
请帮助我。
像这样修改你的代码。
在设置点击监听之前,在onOff按钮中添加位置作为标签
holder.onoff.setTag(position);
并在
onClick()
int position = (Integer) v.getTag();
然后在onClick()
中使用这个位置变量进行运算。
我已经使用这段代码取消选中一些 checkbox.You 可以试一试: 我的 XMl 文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.sudiproy.checkboxtutorial.MainActivity">
<CheckBox
android:id="@+id/ch_android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="android"/>
<CheckBox
android:id="@+id/ch_ios"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="iOS"/>
<CheckBox
android:id="@+id/ch_windows"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Windows"/>
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit" />
</LinearLayout>
这是我的 Java 文件:
package com.example.sudiproy.checkboxtutorial;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
public class MainActivity extends AppCompatActivity {
private CheckBox chAndroid,chiOS,chWindows;
private Button submit;
private CheckBox checkBox1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chAndroid= (CheckBox) findViewById(R.id.ch_android);
chiOS= (CheckBox) findViewById(R.id.ch_ios);
chWindows=(CheckBox) findViewById(R.id.ch_windows);
submit= (Button) findViewById(R.id.submit);
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(chAndroid.isChecked()){
chWindows.setChecked(false);
}
}
});
}
}