0

DBエントリを表示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ます。

それは可能ですか?
どうやってやるの?

4

5 に答える 5

4

どうぞ。

textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
于 2012-06-16T06:18:27.550 に答える
2

アダプターにa を設定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);
于 2012-06-16T06:17:12.337 に答える
0

<strike>テキストでhtmlタグを使用する

<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());              
    }

}

于 2012-06-16T06:11:05.660 に答える
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);
    }
于 2012-06-16T06:21:33.650 に答える
0

はい、そのためには、リストビュー用のカスタムアダプターを作成する必要があります.getView ()メソッドで、取り消し線の条件を確認した後、最初のテキストをテキストビューに設定し、その後、そのテキストビューに次のように使用できます

 yourtextview.setPaintFlags(yourtextview.getPaintFlags()|Paint.STRIKE_THRU_TEXT_FLAG);
于 2012-06-16T06:20:19.037 に答える