我正在开发一个应用程序,并且标题说如何将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());
}
}
答案 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;
}