如何将Listview项目放入String Array?

时间:2013-11-01 04:05:40

标签: android listview

我正在开发一个应用程序,并且标题说如何将listview的项目放入String数组,而不是将字符串数组放到listview而将listview放到字符串数组中。

我一直在寻找这个,但我发现的是将String数组项放入listview。

请提前帮助我。

为了澄清这个线程,问题是如何将listview项放入String数组中。

感谢。 :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);
}

接下来是listview中项目的信息

 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());
}

}

2 个答案:

答案 0 :(得分:0)

首先,您希望像这样创建String数组并将其放在Activity声明的顶部:

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();
}

希望这有帮助并且有效!如果没有,请告诉我。

答案 1 :(得分:0)

首先,您必须按列的长度创建数组 并创建一个for循环来分配数组中的每个值,如下所示

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