2013-11-01 3 views
0

앱을 개발 중입니다. 제목으로 listview의 항목을 문자열 배열로, 문자열 배열을 listview로, 목록보기를 문자열 배열로 바꾸는 방법에 대해 설명합니다.Listview 항목을 문자열 배열에 넣는 방법은 무엇입니까?

저는 이것을 찾고 있었지만 문자열 배열 항목을 listview에 넣는 것으로 나타났습니다.

미리 감사드립니다.

이 스레드를 명확히하기 위해 listview 항목을 String 배열에 저장하는 방법이 문제입니다.

감사합니다. : 옆에있는 목록보기

public class DailyPlan extends Activity implements OnItemClickListener { 

final ArrayList<DailyManager> savedItems = new ArrayList<DailyManager>(); 

ListView checkList; 

Boolean nextItem = false; 
TempManager tm; 
DatabaseTemp dbTemp; 
Intent i; 
int taskId = -1; 
String taskName = " ", taskDate = null; 

DatabaseDailyPlan db; 
DailyManager dm; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.saved_dailyplan); 

    checkList = (ListView) findViewById(R.id.lvCheckList); 
    // checkList.setOnItemClickListener(this); 

    try { 
     i = getIntent(); 
     taskId = i.getExtras().getInt("task_id"); 
     taskName = i.getExtras().getString("task_name"); 
     Toast.makeText(getApplicationContext(), "From new id is" + taskId, 
       5000).show(); 

    } catch (Exception e) { 

    } 

    Button addList = (Button) findViewById(R.id.bAddList); 

    addList.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      // openDialog("", false, -1); 
     } 
    }); 

    if (nextItem) { 
     // openDialog("", false, -1); 
    } 

} 

public void refresh() { 

    DailyPlan.this.onResume(); 
} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    savedItems.clear(); 

    dbTemp = new DatabaseTemp(getApplicationContext()); 
    dbTemp.getWritableDatabase(); 

    db = new DatabaseDailyPlan(getApplicationContext()); 
    db.getWritableDatabase(); 

    if (taskId != -1) { ///For Load 

     ArrayList<DailyManager> savedList = db.getList(taskId); 
     for (int i = 0; i < savedList.size(); i++) { 

      String savedListItems = savedList.get(i).getDaily_list(); 
      String savedListTitle = savedList.get(i).getDaily_name(); 
      String savedListDate = savedList.get(i).getDaily_date(); 
      int savedListId = savedList.get(i).getDaily_id(); 

      DailyManager dm = new DailyManager(); 
      dm.setDaily_list(savedListItems); 
      dm.setDaily_name(savedListTitle); 
      dm.setDaily_date(savedListDate); 
      dm.setDaily_id(savedListId); 

      savedItems.add(dm); 
     } 
    } else { ///For New 

    } 
    checkList.setAdapter(new ListAdapter(this)); 
} 

public class ListAdapter extends BaseAdapter { 

    LayoutInflater inflater; 
    ViewHolder viewHolder; 

    public ListAdapter(Context c) { 
     // TODO Auto-generated constructor stub 

     inflater = LayoutInflater.from(c); 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return savedItems.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.row_checklist_item, 
        null); 

      viewHolder = new ViewHolder(); 
      viewHolder.checkListItem = (TextView) convertView 
        .findViewById(R.id.tvCheckListItem); 

      convertView.setTag(viewHolder); 

     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     viewHolder.checkListItem.setText(savedItems.get(position) 
       .getDaily_list() + position); 

     final int temp = position; 

     return convertView; 
    } 
} 

private class ViewHolder { 
    TextView checkListItem; 
} 

@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int item, long arg3) { 
    // TODO Auto-generated method stub 
    // openDialog(savedItems.get(item).getDaily_name(), true, 
    // savedItems.get(item).getDaily_id()); 
} 

}

+0

다음과 같이 배열의 모든 값을 할당하는 for 루프를 만들 필요가 왜 문자열 배열에서 목록보기의 항목을 넣어해야합니까 그리고 어떻게 listview를 채우는가? – Raghunandan

+0

ListAdapter – ralphgabb

+0

코드를 사용하여 listview를 채우고 왜 문자열 배열이 필요한가요? – Raghunandan

답변

0

은 첫째로 당신이 그렇게처럼 문자열 배열을 만들어에이를 배치 할 내부 항목의 정보는 D

코드

public class DailyPlanTab extends Activity implements OnItemClickListener { 

ListView dailyPlanList; 

ArrayList<DailyManager> taskList = new ArrayList<DailyManager>(); 
DatabaseDailyPlan db; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dailyplan_layout); 

    dailyPlanList = (ListView) findViewById(R.id.lvDailyPlanList); 
    dailyPlanList.setOnItemClickListener(this); 

    ImageView add = (ImageView) findViewById(R.id.ivDailyPlanAdd); 

    add.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Intent newDailyIntent = new Intent(getApplicationContext(), 
        NewDailyPlan.class); 
      startActivity(newDailyIntent); 

     } 
    }); 
} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    taskList.clear(); 

    db = new DatabaseDailyPlan(getApplicationContext()); 
    db.getWritableDatabase(); 

    ArrayList<DailyManager> tempList = db.getTask(); 

    for (int i = 0; i < tempList.size(); i++) { 

     String getTask = tempList.get(i).getDaily_name(); 
     String getDate = tempList.get(i).getDaily_date(); 
     int getId = tempList.get(i).getDaily_id(); 

     DailyManager dm = new DailyManager(); 
     dm.setDaily_name(getTask); 
     dm.setDaily_date(getDate); 
     dm.setDaily_id(getId); 

     taskList.add(dm); 
    } 

    dailyPlanList.setAdapter(new ListAdapter(this)); 
    // db.close(); 

} 

public class ListAdapter extends BaseAdapter { 

    LayoutInflater inflater; 
    ViewHolder viewHolder; 

    public ListAdapter(Context c) { 
     // TODO Auto-generated constructor stub 

     inflater = LayoutInflater.from(c); 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return taskList.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.row_checklist_item, 
        null); 

      viewHolder = new ViewHolder(); 
      viewHolder.taskTitle = (TextView) convertView 
        .findViewById(R.id.tvCheckListItem); 
      convertView.setTag(viewHolder); 

     } else { 
      viewHolder = (ViewHolder) convertView.getTag(); 
     } 

     viewHolder.taskTitle.setText("" 
       + taskList.get(position).getDaily_name()); 

     return convertView; 
    } 
} 

public class ViewHolder { 

    TextView taskTitle, taskDate; 
} 

@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int position, 
     long arg3) { 
    // TODO Auto-generated method stub 

    int taskId = taskList.get(position).getDaily_id(); 
    String taskName = taskList.get(position).getDaily_name(); 
    String taskDate = taskList.get(position).getDaily_date(); 

    Intent newPlan = new Intent(getApplicationContext(), DailyPlan.class); 
    newPlan.putExtra("task_id", taskId); 
    newPlan.putExtra("task_name", taskName); 

    startActivity(newPlan); 
} 

입니다 활동 선언 상단 :

private String[] stringArray = new String[listView.getCount()]; 

그러면 listView.getCount()를 사용하여 목록에있는 항목의 수를 확인한 다음 목록을 반복하고 이전에 만든 배열에 모든 값을 추가 할 수 있습니다. 이렇게 할 수 있습니다 :

for(int i=0; i < listView.getCount(); i++) 
{ 
    View v = list.getChildAt(i); 
    TextView tv= (TextView) v.findViewById(R.id.item); 
    stringArray[i] = tv.getText(); 
} 

희망이 도움이 작품은! 그렇지 않으면 알려주세요.

+0

크기가없는 배열을 만들 수 없습니다. 첫 번째 줄을 "new String [listView.getCount()]"를 사용하도록 변경하십시오. –

+0

사실입니다. 나는 그것을 잊었다. 대괄호 안에 0을 설정하거나 @RickFalck에서 제안한 것을 할 수 있습니다. – edwoollard

0

먼저 당신은 당신의 열 의 길이에 의해 배열을 만들고

string[] selected_item = new string[listView.SelectedItems.Count]; 
    for (int i = 0; i < selected_item.Length; i++) 
    { 
     selected_item[i] = listView.SelectedItems[i].Text; 
    } 
관련 문제