嗨,我之前问过这个问题。但是我没有合适的解决方案。我有一个微调器,它将从json加载数据。从微调器中选择任何项目后,它将再次将第零位置值发布到另一个API。一切正常,但是我的问题是我默认不希望微调器出现任何变化,我添加了一个名为“没有选择”到第0个位置,但是它不起作用。请帮助我实现这一点。
我的微调器
void getList(){
final Common common = new Common();
int a= 100;
String webService = "API/Employee/GetList";
String postData = "";
String[] dataColumns = {"ID",//0
"Code",//1
"Name" ,//2
};
Runnable postThread = new Runnable() {
@Override
public void run() {
//Spinner
int a= 0;
ArrayList<String> Names = new ArrayList<String>();
for (int i=0;i<common.dataArrayList.size();i++){
String[] data=new String[3];
data[0]=common.dataArrayList.get(i)[0];
data[1]=common.dataArrayList.get(i)[1];
data[2]=common.dataArrayList.get(i)[2];
List.add(data);
}
for(int i=0;i<List.size();i++){
Names.add(List.get(i)[1]+" - "+List.get(i)[2]);
}
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(Insert.this, R.layout.item_spinner_black, Names);
dataAdapter.setDropDownViewResource(R.layout.item_spinner);
Spinner =(Spinner)findViewById(R.id.spinner);
//I added below code but it not working
// dataAdapter.insert(getString(R.string.selectemp), 0);
Spinner.setAdapter(dataAdapter);
}
我的帖子数据
postData="{\"Title\":\""+title.getText().toString()
+"\",\"Spinnervalue\":\""+List.get(Spinner.getSelectedItemPosition())[0]}
答案 0 :(得分:1)
我认为它可以帮助您。
ArrayList<String> Names = new ArrayList<String>();
Names.add("no selection");
for (int i=0;i<common.dataArrayList.size();i++){
String[] data=new String[3];
data[0]=common.dataArrayList.get(i)[0];
data[1]=common.dataArrayList.get(i)[1];
data[2]=common.dataArrayList.get(i)[2];
List.add(data);
}
for(int i=0;i<List.size();i++){
Names.add(List.get(i)[1]+" - "+List.get(i)[2]);
}
答案 1 :(得分:1)
问题是适配器的初始化。因此,当您以后添加数据时,它将没有预先选择的项目。
修改:
我重新排序了您当前的代码。
void getList(){
final Common common = new Common();
int a= 100;
String webService = "API/Employee/GetList";
String postData = "";
String[] dataColumns = {"ID",//0
"Code",//1
"Name" ,//2
};
Runnable postThread = new Runnable() {
@Override
public void run() {
//Spinner
int a= 0;
ArrayList<String> Names = new ArrayList<String>();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(Insert.this, R.layout.item_spinner_black, Names);
dataAdapter.setDropDownViewResource(R.layout.item_spinner);
Spinner =(Spinner)findViewById(R.id.spinner);
//I added below code but it not working
// dataAdapter.insert(getString(R.string.selectemp), 0);
Spinner.setAdapter(dataAdapter);
for (int i=0;i<common.dataArrayList.size();i++){
String[] data=new String[3];
data[0]=common.dataArrayList.get(i)[0];
data[1]=common.dataArrayList.get(i)[1];
data[2]=common.dataArrayList.get(i)[2];
List.add(data);
}
for(int i=0;i<List.size();i++){
Names.add(List.get(i)[1]+" - "+List.get(i)[2]);
}
}
答案 2 :(得分:0)
我添加了一个虚拟值,并且效果很好。
ArrayList<String> Names = new ArrayList<String>();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(Insert.this, R.layout.item_spinner_black, Names);
dataAdapter.setDropDownViewResource(R.layout.item_spinner);
Spinner =(Spinner)findViewById(R.id.spinner);
String[] data = new String[3];
data[0]="00000000-0000-0000-0000-000000000000";
data[1]="Select";
data[2]="Name";
List.add(data);
for (int i=0;i<common.dataArrayList.size();i++){
String[] data=new String[3];
data[0]=common.dataArrayList.get(i)[0];
data[1]=common.dataArrayList.get(i)[1];
data[2]=common.dataArrayList.get(i)[2];
List.add(data);
}
for(int i=0;i<List.size();i++){
Names.add(List.get(i)[1]+" - "+List.get(i)[2]);
}
Spinner.setAdapter(dataAdapter);