2016-12-29 7 views
0

私はの取り消し線textviewlistviewにしようとしています。私はフルーツのストリングを作り、値が1または0である別のストリングを作成しました。値が1の場合、そのフルーツを打ち切りたいと思います。だから以下のコードに従って、Appleは打ち出されなければならない。Android:リストビューで取り消すことはできません

以下は私のコードですが、私はシステムが実行された行を見ることができますrow.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);しかし、まだアップルのエントリはストライクアウトとして見られていません。

助けてください。

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     String[] values = new String[]{"Apple", "Banana", "Orange", "Mango"}; 
     String[] brk = new String[]{"1", "0", "0", "0"}; 
     final ListView lv = (ListView) findViewById(R.id.shopList); 


     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
     android.R.layout.simple_list_item_1, android.R.id.text1, values); 
     System.out.println("value of child count is-" + adapter.getCount()); 


     for (int t = 0; t < adapter.getCount(); t++) { 
      System.out.println("@@@@@@@@@@@@@@@@@Inside loop"); 
      String itemValue = (String) adapter.getItem(t); 
      TextView row = (TextView) adapter.getView(t, null, null); 
      System.out.println("item value -" + itemValue); 
      System.out.println("corresponding brk -" + brk[t]); 
      if (brk[t].equals("1")) { 
       row.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG); 
       System.out.println("striked -" + brk[t]); 
       adapter.notifyDataSetChanged(); 
      } 
     } 
     lv.setAdapter(adapter); 
    } 

Layoutfile-

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="dhritiapps.dummylv.MainActivity"> 

<ListView 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/shopList"></ListView> 

</RelativeLayout> 
+0

あなたのアダプターを投稿する –

+0

これは似たようなものですか? plsそれをチェック.. http://stackoverflow.com/questions/13658052/set-paint-strike-thru-text-flag-in-textview –

+0

の可能な複製[アプリ内のテキストを簡単に取り除く方法はありますかウィジェット?](http://stackoverflow.com/questions/3881553/is-there-an-easy-way-to-strike-through-text-in-an-app-widget) –

答えて

1

あなたはSpanneble文字列でテキストを取り消しすることができます:私はあなたがビューあなたがsetPainFlagsを使用するCustomAdapterを行いますことをporpose

tv.setText(s, TextView.BufferType.SPANNABLE); 
Spannable spannable = (Spannable) tv.getText(); 
spannable.setSpan(new StrikethroughSpan();, 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
0
  1. が作成されて表示されます。
  2. あなたが独自のアダプタを作成しないことにした場合は、リストビュー
0

にアダプタを接続した後に、この方法を試してみてくださいsetPainFlagsを使用しようと

row.setPaintFlags(tv.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG); 

OR

.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG); 

OR Spannablestringを使用できます

http://androidcocktail.blogspot.in/2014/03/android-spannablestring-example.html

+0

それは働かなかった。同じ出力。 –

+0

私の編集した答えをチェック –

関連する問題