2016-12-06 30 views
1

私は3つのアクティビティを持っています。 Activityでは、CSVファイルからデータを読み込み、ListViewを使用して、EditTextに表示しています。今、EditTextの値を別のActivityに渡したいと思います。この問題を解決するために何ができるのですか?リストビューからEditText値を別のアクティビティに渡す

コード:

String dir = Environment.getExternalStorageDirectory() + "/grocery/data/" + spinner.toString(); 

    final File csvfile = new File(dir.toString()); 

    ListView listView = (ListView) findViewById(R.id.listview); 

    MyList adapter = new MyList(getApplicationContext(), R.layout.activity_editfeild); 

    listView.setAdapter(adapter); 


    studentid= (EditText) findViewById(R.id.et_studentid); 
    Schoolname= (EditText) findViewById(R.id.et_schoolname); 
    schoolAdress= (EditText) findViewById(R.id.et_schooladd); 
    studentname=(EditText) findViewById(R.id.et_studentname); 
    fathername= (EditText) findViewById(R.id.et_fathername); 
    mothername= (EditText) findViewById(R.id.et_mothername); 
    studentaddress= (EditText) findViewById(R.id.et_studentadd); 

//Toast.makeText(Editinfo.this, studentid.getText().toString(), Toast.LENGTH_SHORT).show(); 


    FileInputStream inputStream = null; 
    try { 
     inputStream = new FileInputStream(csvfile); 
    } catch (FileNotFoundException e){ 
     e.printStackTrace(); 
    } 

    CSVReader reader = new CSVReader(inputStream); 

    final List<String[]> myList=reader.read(); 

    for (String[] data : myList) { 
     adapter.add(data); 
    } 

    next.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getApplicationContext(), Editinfo1.class); 

      intent.putExtra("spinner", chosenOption); 

      intent.putExtra("studentid", studentid.getText().toString()); 

      intent.putExtra("schoolname", Schoolname.getText().toString()); 
      intent.putExtra("schooladdress", schoolAdress.getText().toString()); 
      intent.putExtra("studentname", studentname.getText().toString()); 
      intent.putExtra("fathername", fathername.getText().toString()); 
      intent.putExtra("mothername", mothername.getText().toString()); 
      intent.putExtra("studentaddress", studentaddress.getText().toString()); 
      intent.putExtra("myList", (Serializable) myList); 
      //intent.putExtra("mylist", myList); 
      startActivity(intent); 
     } 
    }); 
} 
+0

を逃したがあれば私に知らせてください。 – Shailesh

+0

ありがとう...あなたがアイテムの位置を渡す方法についての簡単なアイデアを与えることができます –

+0

これを確認してくださいhttp://stackoverflow.com/questions/5374546/passing-arraylist-through-intent – Shailesh

答えて

0

次のコードのようなあなたのアダプタを変更します。

は新しいArrayListを定義します。 Private List<String> listItemChosen = new ArrayList<>();

リストを返すメソッドを作成します。あなたに

private List<String> getSelectedString(){ 
     return listItemChosen; 
    } 

をonClickは好きです以下:

SharedPreferences sharedPreferences = context.getSharedPreferences(Constants.MODE_SHARED, Context.MODE_PRIVATE); 
final SharedPreferences.Editor edit = sharedPreferences.edit(); 
final Gson gson = new Gson(); 

holder.tvItemName.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        listItemChosen.add(itemName); 
        String jsonString = gson.toJson(getSelectedString()); 
        edit.putString(Constants.KEY_SHARED,jsonString); 
        edit.commit(); 
       } 
      }); 

上記のコードは条件を追加したものです。 textviewでクリックするたびに、選択した項目が常にリストに保存されます。

追加された項目を削除する必要がある場合は、intのようなパラメータをもう一度追加する必要があります。最初に項目を追加する場合はクリックし、同じ項目を追加する場合は2回クリックします。

私は必要なもののような参照の外観を持っていますが、チェックボックスを使用してHEREです。しかし、一般的には、ロジックは同じです。

は何かがあなたが意図を使用して、そのリスト項目の位置とあなたのArrayListを渡して、次の活動にあなたがその配列リストと位置を取得し、受信した位置を使用して、あなたのArrayListから値を取得し

+0

ありがとう...それは働く.. –

+0

あなたは大歓迎です。喜んで.. –

関連する問題