2012-02-02 6 views
0

良い日、配列ビューア内のテキストビューアイテムの状態を配列アダプタから表示しようとしています。私は正常にリストビューの項目を保存することができますが、私はそれを表示することはできませんが、リストビューが再び設定されています。ArrayAdapterからリストビューの取り消し線テキストの状態を表示します。

onitemclick:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    String mytext = ((TextView)view).getText().toString(); 

    TextView text = (TextView)view.findViewById(android.R.id.text1); 
    text.setText(mytext); 
    text.setPaintFlags(text.getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG);    

    crossed_text.add(text.getText().toString()); // this is an Arraylist to store striked texts 

    } 

と移入リストビュー:?私は戻ってリストビューを移入状態を経て、このストライクを取得するにはどうすればよい

// i tried this 

dialog = new Dialog(this); 
     LayoutInflater my_inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View checklistView = my_inflater.inflate(R.layout.check_list,null, false); 
    dialog.setContentView(checklistView); 
    dialog.setCancelable(true); 

     ListView list = (ListView)dialog.findViewById(R.id.listview_id); 
     TextView text = (TextView)list.findViewById(android.R.id.text1); 
     list.setOnItemClickListener(this); 
     list.setOnItemLongClickListener(this); 

    my_CheckList_Adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data); 

       for(int i = 0; i < my_CheckList_Adapter.getCount(); i++){ 


    TextView childtext = (TextView)list.getChildAt(i); // getting null value here 

         //childtext = (TextView)my_CheckList_Adapter.getItem(i).toString(); 

     if(crossed_text.contains(childtext.getText().toString())){ 
     childtext.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG); 

       } 
      } 

     list.setAdapter(my_CheckList_Adapter); 

..おかげ

答えて

0

を試してみてください
if(crossed_text.get(i).contains(childtext.getText().toString())){ 

または

if(crossed_text.get(i).equals(childtext.getText().toString())){ 

EDIT:

それは、作業サンプルですが、それは悪い習慣サンプルの詳細です。テキストを収集しないでください。 のアイテムは、後でそれらのインデックスを使用して配列に格納します。 テキストを使用するリスト内の項目を検索したい場合を除きます。リストからアイテムを収集してその上でアクションを実行する場合は、 のインデックスを使用してアクションを実行します。


public class ListActivityArrayAdapter extends Activity { 

    ListView lv; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     LinearLayout ll = new LinearLayout(this); 
     LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.WRAP_CONTENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT); 

     ll.setLayoutParams(lp1); 
     ll.setOrientation(1); 
     lv = new ListView(this); 

     final String [] data = new String[]{"test","test1","test2","test3","test4","test5","test6"}; 
     final ArrayAdapter ad = new ArrayAdapter(this,android.R.layout.simple_list_item_single_choice,data){ 
      public View getView(int position, View convertView, ViewGroup parent){ 
        TextView tv =new TextView(getContext()); 
          tv.setText(data[position]); 
       tv.setTextSize(24); 
       return tv; 
      } 
     }; 
     lv.setAdapter(ad); 
     final HashSet<String> arr = new HashSet<String>(); 
     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       String text = ((TextView) view).getText().toString(); 
       arr.add(text); 
       System.out.println("added: "+text); 
      } 
     }); 

     Button b = new Button(this); 
     b.setText("strike items"); 
     b.setOnClickListener(new View.OnClickListener(){ 
      public void onClick(View view) { 
       for(String txt:arr) 
       { 
        ((TextView)(lv.getChildAt(ad.getPosition(txt)))). 
        setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG); 
       } 
      } 
     }); 

     ll.addView(lv); 
     ll.addView(b); 
     setContentView(ll); 
    } 
} 

歓声

+0

応答に感謝します。この行の子テキストのnull値を取得しています。TextView childtext =(TextView)list.getChildAt(i);何か案は? – irobotxxx

+0

list.setAdapter(my_CheckList_Adapter); forループの前に設定してください。 –

+0

ArrayAdapter http://sirinsevinc.wordpress.com/2010/05/11/109/を使用する方法や、このサイトのアダプターについての情報がたくさんあります。 –