gpt4 book ai didi

android - 更改由 CustomAdapter(扩展 BaseAdapter)创建的微调器上的文本

转载 作者:行者123 更新时间:2023-11-30 00:58:27 25 4
gpt4 key购买 nike

我的应用程序创建了一个 ListView,它根据数组中的字符串数创建列表项。但是,我希望每个 Spinner 项目都选择了适当的项目。

例子:String[] 项目 = {"item1", "item2", "item3"}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

String[] items = {"item1", "item2", "item3"}

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ListView listView = (ListView) findViewById(R.id.requestItems_listView);
listView.setAdapter(new CustomAdapter(this));
}

private class CustomAdapter extends BaseAdapter {
LayoutInflater inflater;

public CustomAdapter(Context context) {
inflater = LayoutInflater.from(context);
}

public int getCount() {
// TODO Auto-generated method stub
return items.length;
}

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

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

public View getView(int arg0, View convertview, ViewGroup arg2) {
ViewHolder viewHolder;
if (convertview == null) {
convertview = inflater.inflate(R.layout.request_item_list_item, null);
viewHolder = new ViewHolder();
viewHolder.spinner = (Spinner) convertview.findViewById(R.id.itemSpinner);
viewHolder.spinner.setAdapter(adapter);
convertview.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertview.getTag();
}
return convertview;
}

public class ViewHolder {
Spinner spinner;
}
}
}

所以这应该在 ListView 中创建 3 个(因为 String[]“items”中有 3 个项目)“request_item_list_item”项目。

它的每个微调器(request_item_list_item 的 1 部分)都在位置 0,所以:

“项目 1”

“项目 1”

“项目 1”

不过我希望它执行以下操作:

“项目 1”

“项目2”

“项目3”

这会在 CustomAdapter 中完成吗?

奖金问题:如果我希望用户能够按下“添加按钮”以将列表项的数量增加 1(这样就有 4 个 request_item_list_items、5 个、6 个等)是否有我应该使用的 .add 方法?或者我只是更改 getCount 并刷新列表(这不是理想的......如果用户已经在 request_item_list_items 中填写了信息,那么他们将在刷新时丢失所有输入)?

最佳答案

对于第一个问题,您只需像这样更改 getView:(如 I_A_Mok 评论的那样)

public View getView(int arg0, View convertview, ViewGroup arg2) {
ViewHolder viewHolder;
if (convertview == null) {
convertview = inflater.inflate(R.layout.request_item_list_item, null);
viewHolder = new ViewHolder();
viewHolder.spinner = (Spinner) convertview.findViewById(R.id.itemSpinner);
viewHolder.spinner.setAdapter(adapter);
convertview.setTag(viewHolder);
viewHolder.spinner.setSelection(arg0);
} else {
viewHolder = (ViewHolder) convertview.getTag();
}
return convertview;
}

第二个问题:

CustomAdapter myAdapter;
ArrayList<String> items;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

items = new ArrayList<>();
items.add("item1");
items.add("item2");
items.add("item3");

ListView listView = (ListView) findViewById(R.id.requestItems_listView);
myAdapter = new CustomAdapter(this, items);
listView.setAdapter(myAdapter);

Button bt_add_new = (Button)findViewById(R.id.bt_add_new);
bt_add_new.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
items.add("item" + items.size() + 1);
myAdapter.setItems(items);
myAdapter.notifyDataSetChanged();
}
});
}

private class CustomAdapter extends BaseAdapter {
LayoutInflater inflater;

private ArrayList<String> items;

public CustomAdapter(Context context, ArrayList<String> items) {
inflater = LayoutInflater.from(context);
this.items = items;
}

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

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

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

public View getView(int arg0, View convertview, ViewGroup arg2) {
ViewHolder viewHolder;

convertview = inflater.inflate(R.layout.request_item_list_item, null);
viewHolder = new ViewHolder();
viewHolder.spinner = (Spinner) convertview.findViewById(R.id.itemSpinner);

ArrayAdapter<String> adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
viewHolder.spinner.setAdapter(adapter);
convertview.setTag(viewHolder);

return convertview;
}

public ArrayList<String> getItems() {
return items;
}

public void setItems(ArrayList<String> items) {
this.items = items;
}

public class ViewHolder {
Spinner spinner;
}
}

关于android - 更改由 CustomAdapter(扩展 BaseAdapter)创建的微调器上的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com