我知道这已被问及一百万次,但我想知道是否有人可以指出我在正确的方向。更新列表视图基于Android中的微调选择
什么是在android中创建一个微调器并根据微调器选择更改Listview内容的最佳方法? (我基本上只需要去往返于两座列表视图之间)
这将会是巨大的,如果有人能描述一步的工艺步骤,我不知道如何开始,我只成功地创建一个列表视图和arrayadapter,但我不知道如何将其链接到微调,所以当我从微调选择一个选项的ListView更改。
我知道这已被问及一百万次,但我想知道是否有人可以指出我在正确的方向。更新列表视图基于Android中的微调选择
什么是在android中创建一个微调器并根据微调器选择更改Listview内容的最佳方法? (我基本上只需要去往返于两座列表视图之间)
这将会是巨大的,如果有人能描述一步的工艺步骤,我不知道如何开始,我只成功地创建一个列表视图和arrayadapter,但我不知道如何将其链接到微调,所以当我从微调选择一个选项的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.创建适配器并向适配器添加列表。
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.Now根据需要创建一个模型类。
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)为微调器设置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();
}
}
它可能会帮助你。
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
String selectedItem = parentView.getItemAtPosition(position);
//based on selectedItem value decide what kind of data
//you want to populate in your ListView and prepare adapter
yourAdapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {
}
});
微调器有一个选择监听器。这可能是通知数据需求发生变化的“最佳”方式。请执行[编辑]以显示您尝试过的内容,并描述执行该操作时遇到的困难 –
[Android微调:获取所选项目更改事件]的可能重复(http://stackoverflow.com/questions/1337424/) android-spinner-get-the-selected-item-change-event) –