gpt4 book ai didi

android - CheckedTextView 未选中

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:39 27 4
gpt4 key购买 nike

我想要一个多选(选中) ListView 。当我选择一个项目时,绿色复选标记必须出现。为此,我使用了 CheckedTextViewsListView 从数据库中获取数据。为此,我使用了 SimpleCursorAdapter。当您单击该按钮时,所选条目 (ID) 将被传递到下一个 Activity 。

我的问题是 CheckedTextView 的复选标记没有出现。但 ID 将传递给下一个 Activity 。我究竟做错了什么?如何解决?

选择测试.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<Spinner
android:id="@+id/spinner_select_language"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />

<Button
style="@style/btn_Font"
android:id="@+id/selecttest_start"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/spinner_test"
android:onClick="onClick"
android:text="@string/selecttest_start" />

<ListView
android:id="@+id/lv_lesson"
android:layout_width="match_parent"
android:layout_height="200dp"
android:fadeScrollbars="false"
android:choiceMode="multipleChoice"
android:layout_alignParentLeft="true"
android:cacheColorHint="#00000000"
android:layout_below="@+id/selecttest_start" >
</ListView>

</RelativeLayout>

dataset_ctv_lesson.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<CheckedTextView
style="@style/tv_Font"
android:id="@+id/ctv_lesson"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/none"
android:checkMark="@drawable/ctv_state_checker"
/>

</RelativeLayout>

ctv_state_checker.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_checked="false"
android:drawable="@drawable/btn_check_buttonless_off" />
<item android:state_checked="true"
android:drawable="@drawable/btn_check_buttonless_on" />

</selector>

选择测试 Activity .java

public class SelectTestActivity 
extends Activity
implements OnItemSelectedListener
{
Database db;
SimpleCursorAdapter adaptercursor, lv_adaptercursor;
ListView lv_lesson;

// Arraylist for checked item in the lesson view
ArrayList<String> checkedlessons = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.selecttest);

// Create Database
db = new Database(this);

// Drop-Down-Menu to select a language
Spinner spinner_language = (Spinner) findViewById(R.id.spinner_select_language);
spinner_language.setOnItemSelectedListener(this);

Cursor cursor = db.createListViewCursor();

String[] displaycolumn = new String[]{"language"};
int[] displayview = new int[] {R.id.tv_language};

adaptercursor = new SimpleCursorAdapter(this, R.layout.datasetlanguage, cursor, displaycolumn, displayview, 0);
spinner_language.setAdapter(adaptercursor);

// ListView to select a lesson
lv_lesson = (ListView) findViewById(R.id.lv_lesson);

cursor = db.createListViewLessonCursor(getSelectedItemIDFromSpinnerLanguage());

displaycolumn = new String[]{"lesson"};
int[] displayview2 = new int[] {R.id.ctv_lesson};

lv_adaptercursor = new SimpleCursorAdapter(this, R.layout.dataset_ctv_lesson, cursor, displaycolumn, displayview2, 0);
lv_lesson.setAdapter(lv_adaptercursor);

lv_lesson.setOnItemClickListener(new ListView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
if (!checkedlessons.contains(Long.toString(id)))
{
checkedlessons.add(Long.toString(id));

// checked textview
lv_lesson.setItemChecked(position, true);
}
else
{
checkedlessons.remove(Long.toString(id));

// unchecked textview
lv_lesson.setItemChecked(position, false);
}
}
});

// Close the database
db.close();
}

最佳答案

  1. 尝试删除 CheckedTextView 的样式,我认为您样式中的某些值会影响外观。
  2. 删除dataset_ctv_lesson.xml 中的RelativeLayout,您不需要更改点击项目的检查状态。 ListView 可以自行维护勾选状态。使用 ListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE) 启用多选模式,并使用 ListView.getCheckedItemPositions() 获取选中的行位置。

关于android - CheckedTextView 未选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13817177/

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