То, что я пытаюсь сделать, это: - Чтобы показать состояния в spinner, загрузите его из базы данных и заполните счетчик. в состоянии выбора, в зависимости от состояния, город должен быть заполнен другим счетчиком.setOnItemSelectedListener не работает при динамическом заполнении элементов в spinner
Что я достиг: Spinner заполнить значения из базы данных, но setOnItemSelectedListener
не работает.
setOnItemSelectedListener
метод работает, когда я ставил данные статически в прядильщик.
Мой Источник:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
public class MainActivity extends Activity {
Spinner sp_state,sp_city,sp_area;
Button ok;
int state_position;
String s_data,c_data,a_data,selected_state;
ArrayList<Satae_Pojo> new_data;
Network_Class net=new Network_Class();
ArrayList<Satae_Pojo> state=new ArrayList<Satae_Pojo>();
ArrayList<Integer> state_id=new ArrayList<Integer>();
ArrayList<String> state_name=new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.search_for_area);
sp_state=(Spinner)findViewById(R.id.spinner_state);
sp_city=(Spinner)findViewById(R.id.spinner_city);
sp_area=(Spinner)findViewById(R.id.spinner_area);
ok=(Button)findViewById(R.id.btn_ok);
List<String> list=new ArrayList<String>();
list.add("Please Select Area");
list.add("Phulewadi");
list.add("Vikramnagar");
list.add("Kadamwadi");
list.add("Rajarampuri");
getStates();
sp_state.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View arg1, int pos, long arg3)
{
System.out.println("This is spinner");
//String id=parent.getItemAtPosition(pos).toString();
//System.out.println("This is selected id "+id);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {}
});
ArrayAdapter<String> state_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, state_name);
state_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp_state.setAdapter(state_adapter);
}
public void getStates()
{
new Thread(new Runnable()
{
@Override
public void run()
{
s_data=net.getState();
ArrayList<Satae_Pojo> statedata = statepojo(s_data);
Iterator<Satae_Pojo> itr = statedata.iterator();
while(itr.hasNext())
{
Satae_Pojo s_pojo=(Satae_Pojo)itr.next();
int id=(Integer)s_pojo.getId();
String name=(String)s_pojo.getState();
state_id.add(id);
state_name.add(name);
}
}
}).start();
}
public ArrayList<Satae_Pojo> statepojo(String result)
{
ArrayList<Satae_Pojo> states=new ArrayList<Satae_Pojo>();
try
{
JSONArray jsonarray = new JSONArray(result);
for(int i=0; i<jsonarray.length(); i++)
{
JSONObject jsonobject=jsonarray.getJSONObject(i);
Satae_Pojo statepojo=new Satae_Pojo();
statepojo.setId(jsonobject.getInt("id"));
statepojo.setState(jsonobject.getString("s_name"));
states.add(statepojo);
}
}
catch(JSONException e)
{
Log.e("Log_tag", "Error Parsing in State....."+e.toString());
Log.e("Log_Answers","Second Error Parsing in State....."+result);
}
return states;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
В выше источника, когда я прохожу «список» в качестве аргумента к адаптеру он работает отлично. , но когда динамическое заполнение state_name передается setOnItemSelectedListener не работает .. что я делаю неправильно ..?
Попробуйте строковый идентификатор = parent.getAdapter(). GetItem (поз) .ToString() –
У меня есть Пробовал, что ... это не работает. см. комментарии только ниже System.out.println («Это прядильщик»); даже этот System.out.println («Это прядильщик»); не печатайте в нем значение. –
Что вы пробовали - parent.getItemAtPosition (pos) то, что я написал, является parent.getAdapter(). GetItem (pos) –