我正在使用ListView
和SimpleCursorAdapter
来显示我的数据库条目。
到目前为止工作正常:
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
中的整个条目。
这可能吗?
我怎么能这样做?
答案 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);
}