2017-01-05 40 views
1

大家好!android - 显示项目点击到由SQLite填充的列表视图

我是新来的android编程,努力如何将_id数据库附加到列表视图适配器。它几乎消耗整个试图找出如何做到这一点。


这里的代码清单:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    overridePendingTransition(R.anim.fadein, R.anim.fadeout); 
    setContentView(R.layout.activity_dictionarylist); 

    filterText = (EditText)findViewById(R.id.txtsearch); 
    ListView itemList = (ListView)findViewById(R.id.listView); 
    DBHelper dbHelper = new DBHelper(Dictionarylist.this); 
    String[] terms = dbHelper.dictionaryWords(); 


    listAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1,terms); 
    itemList.setAdapter(listAdapter); 
    itemList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(getApplicationContext(), "Position " + position, Toast.LENGTH_LONG).show(); 
      Intent intent = new Intent(Dictionarylist.this, DictionaryActvity.class); 

      intent.putExtra("DICTIONARY_ID", position); 

      startActivity(intent); 
     } 
    }); 

    filterText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      Dictionarylist.this.listAdapter.getFilter().filter(s); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 
    } 

下面是数据库助手代码:

public class DBHelper extends DBCon { 
public DBHelper(Context context){ 
    super(context); 
} 

public String[] dictionaryWords(){ 
    String query = "Select * from main_dictionary"; 
    Cursor cursor = this.getdbconnection().rawQuery(query, null); 
    ArrayList<String> wordterms = new ArrayList<String>(); 
    if(cursor.moveToFirst()){ 
     do{ 
      String word = cursor.getString(cursor.getColumnIndexOrThrow("main_word")); 
      wordterms.add(word); 
     } 
     while (cursor.moveToNext()); 
    } 
    cursor.close(); 
    String[] dictionaryWords = new String[wordterms.size()]; 
    dictionaryWords = wordterms.toArray(dictionaryWords); 
    return dictionaryWords; 
} 

public Quizzer getQuizById(int quizId){ 
    Quizzer quizzer = null; 
    String query = "select * from main_dictionary where _id =" + quizId; 
    Cursor cursor = this.getdbconnection().rawQuery(query, null); 
    if(cursor.moveToFirst()){ 
     do{ 
      String word = cursor.getString(cursor.getColumnIndexOrThrow("main_word")); 
      String tagdef = cursor.getString(cursor.getColumnIndexOrThrow("tag_definition")); 
      String engdef = cursor.getString(cursor.getColumnIndexOrThrow("eng_defintion")); 
      String sample = cursor.getString(cursor.getColumnIndexOrThrow("example")); 
      quizzer = new Quizzer(word, tagdef, engdef, sample); 
     } 
     while(cursor.moveToNext()); 

    } 
    cursor.close(); 
    return quizzer; 
} 

我希望得到任何帮助。

+0

从数据库获得'attach _id'的位置? –

+0

没有。我想将数据库的_id附加到列表视图中,所以当我们点击listview上的项目时,它应该显示来自数据库_id的信息。 –

+0

该应用程序是一种字典。 –

回答

0

AFAIK里面的RecyclerView的onBindViewHolder(ViewHolder holder, int position),你可能要附加holder.setTag(model.getId),而不是holder.setTag(位置),我们做。通过holder.setOnClickListener(exampleListener)OnClickListener之外,并使用int positionId = (int) holder.getTag()View.OnclickListener之内获得该标签。这样你也可以使用RecyclerView。

+0

我应该使用recyclerview而不是listview吗? –

+0

如果您需要,您可能需要。 RecyclerView为定制提供了更多选择。 – Debdeep

+0

您也可以为ListView编写自定义适配器并执行相同的操作,以供参考:[link](http://www.ezzylearning.com/tutorial/customizing-android-listview-items-with-custom-arrayadapter)也为RecyclerView教程通过这个:[链接](https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html) – Debdeep

相关问题