2014-11-25 4 views
0

다음을 수행하는 두 개의 csv 파일이 있습니다. 1. 첫 번째 질문에 목록보기가 채워집니다. 이 행은 눌려지면 두 번째보기를 생성하는 onlcick 리스너입니다. 2. 두 번째 CSV 파일에는 첫 번째보기의 질문에 대한 답변이 있습니다.두 개의 csv 파일을 사용하여 Android에서 두 개의보기를 채우는 방법

내 문제는 이것입니다. 두 번째보기에 표시 할 대답을 얻을 수 없습니다. 두 번째보기가 팝업되지만 데이터가 없습니다. 여기

public class AnswerArrayAdapter extends ArrayAdapter<String[]> { 
    private List<String[]> answerList = new ArrayList<String[]>(); 

    static class AnswerViewHolder { 
     TextView name2; 
     TextView answertext; 
    } 

    public AnswerArrayAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
    } 

    @Override 
    public void add(String[] object) { 
     answerList.add(object); 
     super.add(object); 
    } 

    @Override 
    public int getCount() { 
     return this.answerList.size(); 
    } 

    @Override 
    public String[] getItem(int index) { 
     return this.answerList.get(index); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     AnswerViewHolder viewHolder; 
     if (row == null) { 
      LayoutInflater inflater = (LayoutInflater) this.getContext(). 
        getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.screen_popup, parent, false); 
      viewHolder = new AnswerViewHolder(); 
      viewHolder.name2 = (TextView) row.findViewById(R.id.name2); 
      viewHolder.answertext = (TextView) row.findViewById(R.id.answertext); 
      row.setTag(viewHolder); 
     } else { 
      viewHolder = (AnswerViewHolder)row.getTag(); 
     } 
     String[] stat = getItem(position); 
     viewHolder.name2.setText(stat[0]); 
     viewHolder.answertext.setText(stat[1]); 
     return row; 
    } 
} 

의 주요 활동 :

public class MainActivity extends Activity { 
     private ListView listView; 
     private ItemArrayAdapter itemArrayAdapter; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      listView = (ListView) findViewById(R.id.listView); 
      itemArrayAdapter = new ItemArrayAdapter(getApplicationContext(), R.layout.item_layout); 

      Parcelable state = listView.onSaveInstanceState(); 
      listView.setAdapter(itemArrayAdapter); 
      listView.onRestoreInstanceState(state); 

      listView.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View view, 
             int position, long id) { 

        // selected item 
        //String answer = ((TextView) view).getText().toString(); 

        View textview = view.findViewById(R.id.score); 

        String answer = textview.getContext().toString(); 
        // Launching new Activity on selecting single List Item 
        Intent i = new Intent(getApplicationContext(), AnswerPopupWin.class); 
        // sending data to new activity 
        i.putExtra("answer", answer); 
        startActivity(i); 


       } 
      }); 

      InputStream inputStream = getResources().openRawResource(R.raw.islamicfatwahuthameen); 
      CSVFile csvFile = new CSVFile(inputStream); 
      List<String[]> scoreList = csvFile.read(); 

      for(String[] scoreData:scoreList) { 
       itemArrayAdapter.add(scoreData); 
      } 

     } 

} 

그리고 여기에 답변을하는 클래스입니다 :

public class AnswerPopupWin extends Activity { 

    private ListView answerView; 
    private AnswerArrayAdapter answerArrayAdapter; 
    private View view; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(layout.screen_popup); 
     answerView = (ListView) findViewById(R.id.answerView); 
     answerArrayAdapter = new AnswerArrayAdapter(getApplicationContext(), layout.screen_popup); 

     //View textview = view.findViewById(id.name2); 

    } 
} 

모든 여기

대답 어댑터 내 코드입니다 도움이 대단히 감사합니다. 더 나은 질문을하려고합니다. 죄송합니다. 이것이 바보 같은 질문 인 것 같습니다.

ironmantis7x

---- 업데이트 ----- 여기에 다른 배열 어댑터 파일 : 당신이 답변을 추가 할 때 코드 조각을 누락처럼

ublic class ItemArrayAdapter extends ArrayAdapter<String[]> { 
    private List<String[]> scoreList = new ArrayList<String[]>(); 

    static class ItemViewHolder { 
     TextView name; 
     TextView score; 
     TextView answer; 
    } 

    public ItemArrayAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
    } 

    @Override 
    public void add(String[] object) { 
     scoreList.add(object); 
     super.add(object); 
    } 

    @Override 
    public int getCount() { 
     return this.scoreList.size(); 
    } 

    @Override 
    public String[] getItem(int index) { 
     return this.scoreList.get(index); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     ItemViewHolder viewHolder; 
     if (row == null) { 
      LayoutInflater inflater = (LayoutInflater) this.getContext(). 
        getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.item_layout, parent, false); 
      viewHolder = new ItemViewHolder(); 
      viewHolder.name = (TextView) row.findViewById(R.id.name); 
      viewHolder.score = (TextView) row.findViewById(R.id.score); 
      row.setTag(viewHolder); 
     } else { 
      viewHolder = (ItemViewHolder)row.getTag(); 
     } 
     String[] stat = getItem(position); 
     viewHolder.name.setText(stat[0]); 
     viewHolder.score.setText(stat[1]); 
     return row; 

    } 
} 

답변

1

그것은 것입니다 어댑터에 연결하십시오.

AnswerArrayAdapter answerArrayAdapter = 
    new AnswerArrayAdapter(getApplicationContext(), layout.screen_popup); 

InputStream inputStream = getResources().openRawResource(R.raw.my_answers_file_resource); 
CSVFile csvFile = new CSVFile(inputStream); 
List<String[]> answerList = csvFile.read(); 
for(String[] answer : answerList) { 
    answerArrayAdapter.add(answer); 
} 
+0

질문과 답변을 위해 별도의 어레이 어댑터를 작성했습니다. 내가 죽인 것 같아, 응? – ironmantis7x

+0

그래서 loadAnswersFromSomewhere(); 나는 대답을 가지고있는 CSV 파일을 가리킨다. – ironmantis7x

+0

글쎄, 그것은 당신이 당신의 파일을 어떻게 구조화 했느냐에 달려있다. 어떤 종류의 대답을위한 cvs 파일이 있다면, 네, 파일을 읽음으로써'answers'를 읽어 들여야합니다. –

관련 문제