2016-08-18 55 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

忽略其他按鈕

+0

想要點擊編輯按鈕後編輯所有檢查數據? –

+0

@ArpitPatel基本上我想編輯一個檢查過的數據,但我不知道我可以使用'simple_list_item_multiple_choice'選項。但是,編輯點擊編輯按鈕後檢查的數據 –

回答

1

做一個public class utils並在其中創建一個public static ArrayList<Integer> positions。並在adapterlistviewsetOnClickListenerCheckBox,當它被點擊並檢查您將該位置添加到public static array

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

getView()功能充氣後您的適配器的佈局添加此

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指數的所有列表,它進行檢查,當你按下像編輯按鈕刪除等,並點擊這些按鈕,你可以在主陣列的這些索引上執行所需的任務,並將其傳遞給適配器

確保你清除public static Arraylist TE list view您可以通過適配器通知之前每次調用

Utils.positions.clear() 

做到這一點。

+0

如果我理解正確,我應該創建一個空的'ArrayList '這將填充每次我點擊'CheckBox'?如果是這樣,請你給我看看'公共類utils'方法的例子?我對如何實現它有點困惑 –

+0

我很抱歉成爲一個初學者,但我不明白如何將'position'添加到'public static array'中。我不知道這是否影響很大,但我只能聲明'公開ArrayList 職位'。添加靜態似乎給我一個錯誤 –

+0

非常感謝,這是非常有益的和教育 –

0

那麼您只需使用ArrayAdapter的remove()方法從列表中刪除所需的項目。

一個可能的方式做到這一點是:

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

另一種方法是修改ArrayList和呼籲一個ArrayAdapter notifyDataSetChanged()。

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

好的,我可以使用它來刪除,但是怎麼編輯? –

+0

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

+0

在dat博客中你會理解如何編輯 – Athul