0
我已經在listview中實現了一個checkedtextview。問題是checkedtextview的狀態沒有改變或切換。CheckedTextview狀態不變/切換
這裏是適配器:
private class LanguageListAdapter extends BaseAdapter
{
@Override
public int getCount() {
// TODO Auto-generated method stub
return curr.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 2;
}
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
MicrosoftLanguage item = curr.get(position);
String codecurr= item.getCode();
String code= preflang.getString(Constants.ACCESS_LANGUAGE,"en");
System.out.println("selected--->code--->"+code);
if(codecurr.equals(code))
{
System.out.println("Returning equals");
return 1;
}
return 0;
}
@SuppressLint("InflateParams")
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = getLayoutInflater().inflate(R.layout.layout_list_lang, null);
viewHolder.tvm_lang = (CheckedTextView) convertView
.findViewById(R.id.tv_lang);
convertView.setTag(viewHolder);
}else
{
viewHolder = (ViewHolder) convertView.getTag();
}
int type=getItemViewType(position);
if(type==1)
{
viewHolder.tvm_lang.setChecked(true);
}else{
viewHolder.tvm_lang.setChecked(false);
}
MicrosoftLanguage item = curr.get(position);
String name= item.getName();
viewHolder.tvm_lang.setText(name);
viewHolder.tvm_lang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MicrosoftLanguage item = curr.get(position);
String name= item.getCode();
//viewHolder.tvm_lang.setChecked(true);
SharedPreferences.Editor editor = preflang.edit();
// System.out.println(projectid+"--->In Projectactivity");
editor.putString(Constants.ACCESS_LANGUAGE,name);
editor.commit();
viewHolder.tvm_lang.toggle();
/* if(((CheckedTextView) v).isChecked()){
((CheckedTextView) v).setChecked(false);
}else{
((CheckedTextView) v).setChecked(true);
}*/
}
});
return convertView;
}
class ViewHolder {
CheckedTextView tvm_lang;
}
}
爲ListView的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<CheckedTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="test"
android:checkMark="?android:attr/listChoiceIndicatorSingle"
android:clickable="true"
android:textSize="18sp"
android:padding="10dp"
android:layout_marginLeft="10dp"
android:textColor="#ffffff"
android:id="@+id/tv_lang"/>
</LinearLayout>
輸出:
正如你所看到的,我可以選擇多個項目,我不想要。 當我點擊列表視圖中的一個新項目時,原先選擇的textview並未被取消選中。 請幫忙。
'android:checkMark =「?android:attr/listChoiceIndicatorSingle」'不工作? –
更多屏幕可能對此有所幫助。 – childofthehorn
不幸的是..... – kgandroid