gpt4 book ai didi

java - 根据 Android 中的微调器选择更新 ListView

转载 作者:行者123 更新时间:2023-11-30 07:10:15 25 4
gpt4 key购买 nike

我知道这个问题已经被问了一百万次,但我想知道是否有人可以指出我正确的方向。

在 Android 中创建微调器并根据微调器选择更改 ListView 内容的最佳方法是什么? (我基本上只需要在两个 ListView 之间来回)

如果有人可以逐步描述该过程,那就太好了,我不知道如何开始,我只设法创建了一个 ListView 和一个数组适配器,但我不知道如何将其链接到微调器,因此当我从微调器中选择一个选项时, ListView 会发生变化。

最佳答案

对于静态数据。

1.创建一个ArrayList。

List lmonth=new ArrayList();

2.填充数组列表。

lmonth.add("0");lmonth.add("1");lmonth.add("2");lmonth.add("3");lmonth.add("4");lmonth.add("5");lmonth.add("6");lmonth.add("7");lmonth.add("8");lmonth.add("9");
lmonth.add("10");lmonth.add("11");

3.创建Adapter并向Adapter添加列表。

ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, lmonth);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

4.将适配器设置为微调器。

 Spinner month=(Spinner)findViewById(R.id.spinnermonth);

month.setAdapter(dataAdapters);

这是用静态数据填充微调器的方法..

对于动态数据。

1.创建适配器。

public class SpinnerCustomAdapter extends BaseAdapter {
private Context mContext;
private List<JobSearchModel> mList=new ArrayList<JobSearchModel>();
private LayoutInflater mLayoutInflater;
private String mType=null;


public SpinnerCustomAdapter(Context mContext, List<JobSearchModel> list) {
this.mContext=mContext;
this.mList=list;

}


@Override
public int getCount() {
return mList.size();
}

@Override
public Object getItem(int i) {
return i;
}

@Override
public long getItemId(int i) {
return i;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
LayoutInflater layoutInflater=(LayoutInflater)mContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if(convertView==null){
convertView = layoutInflater.inflate(R.layout.layout_spinner, null);
holder = new ViewHolder();
holder.textView2=(TextView)convertView.findViewById(R.id.txt_text2);
convertView.setTag(holder);

}
else {
holder = (ViewHolder) convertView.getTag();
}
JobSearchModel classModel=mList.get(position);
String id = mList.get(position).getId();
if(id.equals("select")){
holder.textView2.setTextColor(mContext.getResources().getColor(R.color.lightblack));
}else{
holder.textView2.setTextColor(mContext.getResources().getColor(R.color.black));
}
holder.textView2.setText(classModel.getDescription());
return convertView;
}
static class ViewHolder{

TextView textView2;
}
}

适配器所需的 XML 是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/txt_text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dami"
android:textSize="14sp"
android:layout_marginLeft="5dp"
android:textColor="#4E4E4E"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"

/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"

/>
</LinearLayout>

3.现在根据需要创建一个Model类。

public class Model {
private String id;
private String description;
public char[] name;

public Model()
{

}
public Model (String id, String description) {
this.id = id;
this.description = description;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append(String.format("%02d", id)).append(" - ").append(description);
return sb.toString();
}

}

4.现在在 Main 类中。

i) 创建 Arayylist。

  private List<Model> mList = new ArrayList<Model>();

ii)初始化并定义微调器。

Spinner loc = (Spinner) findViewById(R.id.sp_loc);

iii)为 Spinner 设置 OnItemSelectedListener。

loc.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {


}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {

}
});

现在用动态数据填充微调器。例如:下面给出代码。

private void Parsing(JsonParser jsonParser) {
Log.i(">>>ClassResponseloc", "" + jsonParser);
mList = new ArrayList<Model>();
Model classModel = null;

try {
while (jsonParser.nextToken() != JsonToken.END_ARRAY) {
classModel = new JobSearchModel();
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
String fieldName = jsonParser.getCurrentName();
if ("id".equals(fieldName)) {
jsonParser.nextToken();
classModel.setId((jsonParser.getText()) + "-");
} else if ("name".equals(fieldName)) {
jsonParser.nextToken();
classModel.setDescription(jsonParser.getText());
}
}

mList.add(classModel);

}

SpinnerCustomAdapter adapter = new SpinnerCustomAdapter(this, mList);
loc.setAdapter(adapter);

} catch (JsonParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

也许对你有帮助。

关于java - 根据 Android 中的微调器选择更新 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39342086/

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