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

接下来是listview里面item的信息

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

}

4

2 回答 2

0

首先,您想像这样创建字符串数组并将其放在 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();
}

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

于 2013-11-10T03:51:58.737 回答
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; 
    }
于 2015-05-18T02:48:35.603 回答