我有一个列表视图,其中有一个文本视图和复选框。如果我第一次点击listview项目,则会显示该复选框。如果我再次点击同一个列表项,则复选框将消失。
怎么做?
源代码:
MainActivity:
public class MainActivity extends Activity {
ArrayList<String> numbers = new ArrayList<String>(100);
ListView lv_numbers;
TextView set_TxtView;
int count_new=1,count_changed=1;
public static boolean firstTime=false,firstTime_changed=false;
Canvas canvas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.numbers_layout);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(getResources().getColor(R.color.blue));
}
lv_numbers=(ListView)findViewById(R.id.lv_numbers);
set_TxtView=(TextView)findViewById(R.id.set_TxtView);
for (int i = 1; i <= 50; i++)
{
if(i%2==0) {
numbers.add("Neelima Maddala");
}
else{
numbers.add("Neelu Neelima");
}
}
Log.e("num","num"+numbers);
final NumbersAdapter num_adapter = new NumbersAdapter(MainActivity.this,numbers);
lv_numbers.setAdapter(num_adapter);
lv_numbers.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedFromList = (String) lv_numbers.getItemAtPosition(position);
set_TxtView.setText(selectedFromList);
int cntChoice = lv_numbers.getCount();
Log.e("hi", "hi" + cntChoice);
}
});
}
}
适配器:
public class NumbersAdapter extends BaseAdapter {
Activity context;
ArrayList<String> numbers_array = new ArrayList<>();
ViewHolder holder;
public static boolean firstTime_new=false;
boolean check;
public NumbersAdapter(Activity activity, ArrayList<String> numbers_array) {
this.context = activity;
this.numbers_array= numbers_array;
}
@Override
public int getCount() {
return numbers_array.size();
}
@Override
public Object getItem(int position) {
return numbers_array.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.number_adapter, null);
holder = new ViewHolder();
holder.ll_base=(RelativeLayout)convertView.findViewById(R.id.ll_base);
holder.number = (TextView) convertView.findViewById(R.id.textView_number);
holder.checkbox= (CheckBox) convertView.findViewById(R.id.checkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String numb=String.valueOf(numbers_array.get(position));
holder.number.setText(numb);
notifyDataSetChanged();
return convertView;
}
static class ViewHolder {
TextView number;
RelativeLayout ll_base;
CheckBox checkbox;
}
}
答案 0 :(得分:2)
像这样修改你的getView方法:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.number_adapter, null);
holder = new ViewHolder();
holder.ll_base=(RelativeLayout)convertView.findViewById(R.id.ll_base);
holder.number = (TextView) convertView.findViewById(R.id.textView_number);
holder.checkbox= (CheckBox) convertView.findViewById(R.id.checkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String numb=String.valueOf(numbers_array.get(position));
holder.ll_base.setTag(false);
holder.number.setText(numb);
holder.checkbox.setVisibility(View.GONE);
notifyDataSetChanged();
holder.ll_base.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if( ((Boolean)holder.ll_base.getTag()).booleanValue()== false){
holder.checkbox.setVisibility(View.VISIBILE);
holder.ll_base.setTag(true)
}else{
holder.checkbox.setVisibility(View.GONE);
holder.ll_base.setTag(false);
}
}
});
return convertView;
}
请忽略错别字。
答案 1 :(得分:1)
请尝试以下列表项目代码,
lv_numbers.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedFromList = (String) lv_numbers.getItemAtPosition(position);
set_TxtView.setText(selectedFromList);
int cntChoice = lv_numbers.getCount();
Log.e("hi", "hi" + cntChoice);
CheckBox selectedCheckBox = (CheckBox) view.findViewById(R.id.checkbox);
if(selectedCheckBox.getVisibility() == View.GONE)
{
selectedCheckBox.setVisibility(View.VISIBLE);
}
else
{
selectedCheckBox.setVisibility(View.GONE);
}
}
});