如何通过ListView中的条目进行攻击?

时间:2012-06-16 06:06:11

标签: android android-listview adapter simplecursoradapter

我正在使用ListViewSimpleCursorAdapter来显示我的数据库条目。 到目前为止工作正常:

public void LoadListView(){
    Cursor mCursor = mDbHelper.fetchAllFahrtenbuch();
    if (mCursor != null){     
        startManagingCursor(mCursor);
        mCursor.moveToFirst();
        ListAdapter adapter = new SimpleCursorAdapter(this,
                R.layout.fahrten_anzeigen_list_view, 
                mCursor,
                new String[] { "_id", mCursor.getColumnName(6), mCursor.getColumnName(1), mCursor.getColumnName(14), mCursor.getColumnName(15), mCursor.getColumnName(16), mCursor.getColumnName(17), mCursor.getColumnName(20)},
                new int[] { R.id.textView15, R.id.textView1, R.id.TextView3, R.id.textView5, R.id.textView6, R.id.textView9, R.id.textView10, R.id.textView13});
        setListAdapter(adapter);
        registerForContextMenu(getListView());              
        }
}

我想要做的是在条目中收到特殊值时通过条目。 如果mCursor.getColumnName(6)的值 0 ,我想点击ListView中的整个条目

这可能吗?
我怎么能这样做?

5 个答案:

答案 0 :(得分:4)

你走了。

textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);

答案 1 :(得分:2)

在适配器上设置SimpleCursorAdapter.ViewBinder,看看是否需要绑定第6列的数据。如果您在该列并且它具有所需的值,则通过条目:

adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {

     public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
          if (view.getId() == R.id.textView6) {
              TextView tv = (TextView) view;
              // bind the text to this TextView(I assume that it's a TextView)
              tv.setText(cursor.getString(cursor.getColumnIndex(columnIndex))); 
              // check if it is the special value.
              // if it is strike through this entry, whatever that means
              return true;
          }
          return false;
     }

});
setListAdapter(adapter);

答案 2 :(得分:0)

在文字

中使用html标记<strike>
<strike>This is a line</strike> 

这是一行

public void LoadListView(){
    Cursor mCursor = mDbHelper.fetchAllFahrtenbuch();
    if (mCursor != null){     
        startManagingCursor(mCursor);
        mCursor.moveToFirst();
        String data  = new String[] { "_id", mCursor.getColumnName(6), mCursor.getColumnName(1), mCursor.getColumnName(14), mCursor.getColumnName(15), mCursor.getColumnName(16), mCursor.getColumnName(17), mCursor.getColumnName(20);
        if (mCursor.getColumnName(6).equals("0") {
           data =  new String[] { "_id", "<strike>"+mCursor.getColumnName(6)+"</strike>", "<strike>"+mCursor.getColumnName(1)+"</strike>", "<strike>"+mCursor.getColumnName(14)+"</strike>", "<strike>"+mCursor.getColumnName(15)+"</strike>", "<strike>"+mCursor.getColumnName(16)+"</strike>", "<strike>"+mCursor.getColumnName(17)+"</strike>", "<strike>"+mCursor.getColumnName(20)+"</strike>";
        }
    ListAdapter adapter = new SimpleCursorAdapter(this,
            R.layout.fahrten_anzeigen_list_view, 
            mCursor,
            data},
            new int[] { R.id.textView15, R.id.textView1, R.id.TextView3, R.id.textView5, R.id.textView6, R.id.textView9, R.id.textView10, R.id.textView13});
    setListAdapter(adapter);
    registerForContextMenu(getListView());              
    }

}

答案 3 :(得分:0)

是的你可以因为你需要为listview制作一个客户端,在 getView()方法中检查你的条件后你可以将第一个文本设置为你的textview并在之后用于像

那样的文本视图
 yourtextview.setPaintFlags(yourtextview.getPaintFlags()|Paint.STRIKE_THRU_TEXT_FLAG);

答案 4 :(得分:0)

您可以在getView

中执行此操作
    if (strikethroughState[position] == 1) {            // your if condition
        first.setPaintFlags(first.getPaintFlags()      // set strikethrough on TextView1
                | Paint.STRIKE_THRU_TEXT_FLAG);
        second.setPaintFlags(second.getPaintFlags()
                | Paint.STRIKE_THRU_TEXT_FLAG);
        third.setPaintFlags(third.getPaintFlags()
                | Paint.STRIKE_THRU_TEXT_FLAG);
        fourth.setPaintFlags(third.getPaintFlags()
                | Paint.STRIKE_THRU_TEXT_FLAG);
    }