【问题标题】:insert an item and sub item from list view从列表视图中插入项目和子项目
【发布时间】:2014-02-14 10:01:43
【问题描述】:

我的列表视图有问题,我显示一个项目和子项目,我想在数据库中插入这两个但它不起作用!错误是我无法将其转换为文本视图 请有人帮助我。

这是我得到的错误:

    java.lang.ClassCastException: android.widget.TwoLineListItem cannot be cast to android.widget.TextView

这里是列表视图的代码:

    String[] databaseColumnNames = new String[] { DBAdapter.col_N_Ordre,DBAdapter.col_Nom_prénom};
    int[] toViewIDs = new int[] { android.R.id.text1,android.R.id.text2 };

    SimpleCursorAdapter myCursordapter = new SimpleCursorAdapter(this,android.R.layout.simple_expandable_list_item_2 , cursor, databaseColumnNames, toViewIDs);

    ListView list = (ListView) findViewById(android.R.id.list);

    list.setAdapter(myCursordapter); 

这里是插入代码:

  list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(final AdapterView<?> arg0, View arg1,
                final int position, long arg3) {

Toast.makeText(getApplicationContext(), " " + position, Toast.LENGTH_LONG).show();
    final String s = ((TextView)arg1).getText().toString();
    db.insertest(s);

查询是:

   public long insertest(String region) {
      ContentValues initialValues = new ContentValues();
          initialValues.put(col_Region,region);
      //initialValues.put(col_Provence_prefecture );
          return db.insert(MENAGE,null, initialValues);
  }

【问题讨论】:

  • 发布您的 logcat 和查询以将数据插入数据库或相关代码
  • 感谢 Adrain 的回复,我对一个项目执行了相同的代码并且效果很好,但是当我决定显示两个时,我确实收到了这个错误:无法将其转换为列表视图.怎么解决??
  • @Adrian :查看我编辑的问题。
  • 你在哪里从 listview 中获取第二个值?
  • 这就是我不知道如何获得第二个值的问题!?我试图将两者都插入一列。你知道如何进行吗?

标签: android android-listview android-sqlite


【解决方案1】:

将以下代码放入您的列表视图项单击侦听器中

TextView v1 = (TextView)arg1.findViewById(android.R.id.text1);
String first = v1.getText().toString();
TextView v2 = (TextView)arg1.findViewById(android.R.id.text2);
String second = v2.getText().toString();

ContentValues cv = new ContentValues();
cv.put(DBAdapter.col_Region, first);
cv.put(DBAdapter._id, second);
myCursordapter.notifyDataSetChanged(); 
list.setAdapter(adapter); 

DBAdapter sql_Adapter = new DBAdapter(context);
sql_Adapter.open();

db.insertest(cv);
sql_Adapter.close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-16
    • 2018-10-15
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    相关资源
    最近更新 更多