2016-10-02 7 views
0

現在、ListViewに名前のリストを表示するアプリケーションがあります。 ListViewの各項目は、CheckBoxとEditTextで構成されています。CheckBoxの値をListViewから取得し、配列リストのObjectに割り当てます。

ユーザーが私は、関連する位置には、このチェックボックスの状態を返し、それをPropsectsオブジェクトを割り当てるチェックボックスを選択すると名前のリストが「展望」オブジェクトのArrayListの

によって提供され(CSVを使用して行われます)次回のアプリを開くときに使用できるように保存することができます。

これは私がAndroidプログラミングで初めて試みたものですから、これを行うために正しいリスナーに苦労しています。私は達成しようとしているものと一致するものを見つけられなかったし、もし私がそれらを理解していなければ!

助けていただけたら幸いです!次のように

私のコードは次のとおりです。

package com.veetox.networkmarketingmanager; 

import android.content.Context; 
import android.content.DialogInterface; 
import android.content.res.Resources; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewConfiguration; 
import android.widget.AdapterView; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.RadioGroup; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.veetox.networkmarketingmanager.data.Prospects; 
import com.veetox.networkmarketingmanager.helper.FileHelper; 
import com.veetox.networkmarketingmanager.helper.ProspectListAdapter; 
import com.veetox.networkmarketingmanager.helper.ProspectViewHolder; 

import java.io.File; 
import java.lang.reflect.Field; 
import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity 
{ 
    public static ArrayList<Prospects> prospectList = new ArrayList<>(); 
    Resources res; 
    FileHelper fileHelper = new FileHelper(this); 
    ListView prospectsListEntry; 
    CheckBox prospectsCheckBox; 
    EditText prospectsEditText; 
    ProspectListAdapter pla; 



    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     prospectsCheckBox = (CheckBox) findViewById(R.id.pr_checkBox); 
     prospectsEditText = (EditText) findViewById(R.id.pr_name); 

     res = getResources(); 

     createProspectList(); 

     prospectsListEntry.setOnItemClickListener(new AdapterView.OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View item, int position, long id) 
      { 
       //Create new Prospect cloning Prospect at row in ItemList that was clicked 
       Prospects prospect = pla.getItem(position); 

       //Change the state of contacted from true to false or vice versa 
       prospect.toggleContacted(); 

       //Create a ProspectViewHolder to hold the view for the row clicked 
       ProspectViewHolder viewHolder = (ProspectViewHolder) item.getTag(); 
       viewHolder.getCheckBox().setChecked(prospect.isChecked()); 

       prospectList.get(position) ; 
       pla.notifyDataSetChanged(); 

      } 
     }); 



    } 

    public void testProspects(View view) 
    { 
     prospectList = fileHelper.testProspects(); 
     pla.notifyDataSetChanged(); 

    } 


    public void createProspectList() 
    { 
     fileHelper = new FileHelper(this); 

     //Comment before testing 
     //prospectList = fileHelper.loadProspects(); 

     //Uncomment for testing 
     prospectList = fileHelper.testProspects(); 

     //Create the list 
     pla = new ProspectListAdapter(this, R.layout.prospects_list_layout, prospectList); 
     prospectsListEntry = (ListView) findViewById(R.id.prospects_list); 
     prospectsListEntry.setAdapter(pla); 

    } 
} 

package com.veetox.networkmarketingmanager.helper; 

import android.content.Context; 
import android.support.annotation.NonNull; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.EditText; 
import android.widget.TextView; 

import com.veetox.networkmarketingmanager.MainActivity; 
import com.veetox.networkmarketingmanager.R; 
import com.veetox.networkmarketingmanager.data.Prospects; 

import java.util.ArrayList; 

/** 
* Created by Matt on 29/09/2016. 
*/ 

public class ProspectListAdapter extends ArrayAdapter<Prospects> 
{ 

    private Context context; 
    private int layoutResourceId; 
    private ArrayList<Prospects> prospect; 



    public ProspectListAdapter(Context context, int layoutResourceId, ArrayList<Prospects> prospect) 
    { 
     super(context, layoutResourceId, prospect); 
     this.layoutResourceId = layoutResourceId; 
     this.context = context; 
     this.prospect = prospect; 

    } 

    public int getCount() 
    { 
     return prospect.size(); 
    } 


    public Prospects getItem(int position) 
    { 
     return prospect.get(position); 
    } 

    public long getItemId(int position) 
    { 
     return position; 
    } 

    @Override 
    @NonNull 
    public View getView(int position, View convertView, @NonNull ViewGroup parent) 
    { 
     View v = convertView; 

     if (v == null) 
     { 
      LayoutInflater vi; 
      vi = LayoutInflater.from(context); 
      v = vi.inflate(layoutResourceId, parent, false); 
     } 

     Prospects prospects = prospect.get(position); 

     if (prospects != null) 
     { 
      TextView prname = (TextView) v.findViewById(R.id.pr_name); 
      CheckBox complete = (CheckBox) v.findViewById(R.id.pr_checkBox); 


      if (prname != null) 
      { 
       prname.setText(prospects.getName()); 
      } 

      if (complete != null) 
      { 
       complete.setChecked(prospects.isChecked()); 
      } 


     } 




     return v; 
    } 



} 

package com.veetox.networkmarketingmanager.data; 


/** 
* A Prospective customer 
*/ 

public class Prospects 
{ 
    private String prospectname; 
    private boolean contacted; 
    private String stringContacted; 

    public Prospects(String aName, boolean contacted) 
    { 
     prospectname = aName; 
     this.contacted = contacted; 
    } 

    public Prospects(String aName, String contacted) 
    { 
     prospectname = aName; 
     this.stringContacted = contacted; 
    } 

    public Prospects(String aName) 
    { 
     prospectname = aName; 
    } 

    public String getName() 
    { 
     return prospectname; 
    } 

    public boolean isChecked() 
    { 
     return contacted; 
    } 

    public void setName (String aName) 
    { 
     prospectname = aName; 
    } 

    public void setContacted(boolean contacted) 
    { 
     this.contacted = contacted; 
    } 

    public void toggleContacted() 
    { 
     if (contacted) 
     { 
      contacted = false; 
     } 
     else 
     { 
      contacted = true; 
     } 
    } 




} 

package com.veetox.networkmarketingmanager.helper; 

import android.content.Context; 
import android.widget.Toast; 

import com.veetox.networkmarketingmanager.data.Prospects; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.util.ArrayList; 
import java.util.Map; 
import java.util.Scanner; 


/** 
* Created by Matt on 28/09/2016. 
*/ 

public final class FileHelper 
{ 
    Context context; 


    public FileHelper(Context aContext) 
    { 
     context = aContext; 




    } 


    public void saveProspects(ArrayList<Prospects> prospects) 
    { 

     ArrayList<Prospects> p = prospects; 

     BufferedWriter bufferedFileWriter = null; 


     try 
     { 
      File aFile = new File(context.getFilesDir(), "prospects.csv"); 
      aFile.createNewFile(); 

      bufferedFileWriter = new BufferedWriter(new FileWriter(aFile)); 

      for (Prospects eachProspect : p) 
      { 
       bufferedFileWriter.write(eachProspect.getName()); 
       bufferedFileWriter.write(","); 
       bufferedFileWriter.write(String.valueOf(eachProspect.isChecked())); 
       bufferedFileWriter.newLine(); 
      } 


     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
      // Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show(); 
     } 
     finally 
     { 
      try 
      { 
       bufferedFileWriter.close(); 
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
       //Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show(); 
      } 
     } 

    } 

    public ArrayList<Prospects> loadProspects() 
    { 
     ArrayList<Prospects> prospectsList = new ArrayList<>(); 
     Scanner bufferedScanner = null; 
     Scanner lineScanner = null; 



      try 
      { 
       File aFile = new File(context.getFilesDir(), "prospects.csv"); 
       bufferedScanner = new Scanner(new BufferedReader(new FileReader(aFile))); 
       while (bufferedScanner.hasNextLine()) 
       { 
        lineScanner = new Scanner(bufferedScanner.nextLine()); 
        lineScanner.useDelimiter(","); 
        String prospect = lineScanner.next(); 
        String contacted = lineScanner.next(); 

        Prospects aProspect = new Prospects(prospect, contacted); 
        prospectsList.add(aProspect); 

       } 

      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
       //Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show(); 
      } 
      finally 
      { 
       try 
       { 
        bufferedScanner.close(); 
       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
        //Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show(); 
       } 
      } 
       return prospectsList; 
      } 

     public ArrayList<Prospects> testProspects() 
     { 
      ArrayList<Prospects> p = new ArrayList<>(); 

      Prospects q = new Prospects("Matt Lee", true); 
      Prospects r = new Prospects("Rosemary Watson", false); 
      Prospects s = new Prospects("Joe Bloggs", false); 
      Prospects t = new Prospects("Ronny Corbit", false); 
      Prospects u = new Prospects("Mr Man", false); 
      Prospects v = new Prospects("Mr Bond", true); 
      Prospects w = new Prospects("Mr Blobby", true); 
      Prospects x = new Prospects("Mary Rose", false); 
      Prospects y = new Prospects("Jane Doe", false); 
      Prospects z = new Prospects("Lucy Sanders", false); 

      p.add(q); 
      p.add(r); 
      p.add(s); 
      p.add(t); 
      p.add(u); 
      p.add(v); 
      p.add(w); 
      p.add(x); 
      p.add(y); 
      p.add(z); 

      return p; 
     } 



} 
+0

アダプターでチェックボックスチェック(チェック済み/チェックなし)を移動する必要があります。 ListIdでクリックした項目にアクセスして検索するには、ItemIdが必要です。 – deejay

+0

ありがとうございました!リスナーをアダプタに移動すると、問題が分類されました。 – Veetox

+0

投票して、この回答を受け入れてください(下記)。乾杯 – deejay

答えて

0

あなたは、アダプタであなたのチェックボックスのチェック(チェック/ notChecked)を移動する必要があります。 ListIdでクリックした項目にアクセスして検索するには、ItemIdが必要です。

関連する問題