2016-08-18 21 views
0

FileOutputStreamを使用してテキストを保存した後、ListViewに表示しました。onClick ListViewのCheckBoxデータを編集するには

コンテンツを編集しようとしています最初アイテムのチェックボックスをオンにし、ボタンをクリックしてデータを編集または削除します。

私は多くの研究をしましたが、それでもここでは、この

は、データを表示し、編集するにはListView

void ShowSavedFiles() { 
    //SavedFiles = getApplicationContext().fileList(); 
    SavedFiles = getApplication().fileList(); 
    ArrayAdapter<String> adapter 
      = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, 
      SavedFiles); 

    listView.setAdapter(adapter); 
    if (adapter.isEmpty()) { 
     Toast.makeText(getBaseContext(), "There is no Address !", Toast.LENGTH_LONG).show(); 
    } 
} 

上でそれらを表示するには、私のコード

ある実装する方法を理解することができませんでしたCheckBoxをチェックしてデータを選択し、編集ボタンを押します。

void editData(){ 
    imgEditData.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (choiceMode == false) { 

       choiceMode = true; 
       clickAble = false; 
       multiSelectBar.setVisibility(View.VISIBLE); 
       Toast.makeText(addressActivity.this, "Edit ON", Toast.LENGTH_SHORT).show(); 
       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
         // change the checkbox state 
         CheckedTextView checkedTextView = ((CheckedTextView) view); 
         checkedTextView.setChecked(!checkedTextView.isChecked()); 
        } 
       }); 
       ArrayAdapter<String> adapter 
         = new ArrayAdapter<String>(addressActivity.this, 
         android.R.layout.simple_list_item_multiple_choice, 
         SavedFiles); 
       listView.setAdapter(adapter); 
      }} 
    }); 
} 

良く

enter image description here

を理解することの絵はpublic class utilsと、それにはpublic static ArrayList<Integer> positionsを作成してください他のボタン

+0

編集ボタンをクリックした後、すべてのチェックデータを編集したいですか? –

+0

@ArpitPatel基本的に私はチェック済みのデータを編集したいですが、私は 'simple_list_item_multiple_choice'に使うことのできる選択肢はわかりません。しかし、はい、編集ボタンをクリックした後でチェックしたデータを編集します –

答えて

1

を無視します。そしてadapterlistviewsetOnClickListenerCheckBoxに追加します。クリックしてチェックすると、その位置がpublic static arrayに追加されます。お使いのアダプタのgetView()機能で

public class Utils { 
    public static ArrayList<Integer> positions =new ArrayList<>(); 
} 

レイアウトはこのように、この

CheckBox cBox= (CheckBox) view.findViewById(R.id.myCheckBox); // view is you view inflated 
final int myPos= position; //position of cuurent item will be passed into getwiew function 

     cBox.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       CheckBox temp=(CheckBox)v; 
       if(temp.isChecked()){ 
        Utils.positions.add(myPos); 
       } 
       else{ 
        Utils.positions.remove(myPos); 
       } 
      } 
     }); 

を追加膨らませた後、あなたが編集、削除などのようにボタンを押したときにチェックされるUtils.postionsのインデックスのすべてのリストを取得することができ、これらのボタンをクリックすると、アダプタに渡されたメインアレイのこれらのインデックスで必要な作業が実行されます

あなたはいつでもあなたがそれをクリアしていることを確認してくださいTE list view YOUは、アダプタ毎回通知する前に

Utils.positions.clear() 

を呼び出すことによってこれを行うことができます。

+0

私が正しく理解したら、 'CheckBox'をクリックするたびに空の' ArrayList 'を作成する必要がありますか? 'public class utils'メソッドの例?私はそれを実装する方法についてちょっと混乱しています –

+0

初心者の方は申し訳ありませんが、' public static array'に 'position'を追加する方法は分かりません。 。私はこれがあまり影響を及ぼさないかどうかはわかりませんが、 'public ArrayList positions'だけを宣言できます。 'static 'を追加するとエラーが発生する –

+0

ありがとう、これはとても役に立ち、教育的です。 –

0

これで、ArrayAdapterのremove()メソッドを使用して、リストから目的のアイテムを削除するだけです。そうする

可能な方法は次のようになります。

Object toRemove = arrayAdapter.getItem([POSITION]); arrayAdapter.remove(toRemove);

もう一つの方法は、ArrayListのを修正し、(notifyDataSetChangedを呼び出すことであろう)ArrayAdapterに。

arrayList.remove([INDEX]); 
arrayAdapter.notifyDataSetChanged(); 
+0

これを削除するには使用できますが、編集はどうですか? –

+0

https://vikaskanani.wordpress.com/2011/07/27/android-focusable-edittext-inside-listview/ – Athul

+0

のデータブログでは、編集方法を理解します – Athul

関連する問題