我知道這已被問及一百萬次,但我想知道是否有人可以指出我在正確的方向。更新列表視圖基於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) –