Android 自定义微调器不是调用自定义listview吗?
我有一个自定义listview和微调器。首先,我填充listview,然后单击下拉微调器。我正在选择一个项目(城市)。我想用新结果更新listview。但我能做的任何事情都不能调用自定义适配器getview。所以listview不是更新。这是我的屏幕 我怎么做 我在给纺纱机加油Android 自定义微调器不是调用自定义listview吗?,android,listview,android-listview,spinner,getview,Android,Listview,Android Listview,Spinner,Getview,我有一个自定义listview和微调器。首先,我填充listview,然后单击下拉微调器。我正在选择一个项目(城市)。我想用新结果更新listview。但我能做的任何事情都不能调用自定义适配器getview。所以listview不是更新。这是我的屏幕 我怎么做 我在给纺纱机加油 private void getCityListWithSpinner() { cityListRequest = new CityListRequest(new AsyncListener() {
private void getCityListWithSpinner() {
cityListRequest = new CityListRequest(new AsyncListener() {
@Override
public void asyncOperationSucceded(Object obj, int queue) {
System.out.println("Objemizzz " + obj.toString());
cityArrayList = (ArrayList<CityList>) obj;
Spinner ss = (Spinner) findViewById(R.id.cityfilmspinner);
CinemaCitySelector2 citySelector = new CinemaCitySelector2();
cityList.add("Seçiniz");
for (int i = 0; i < cityArrayList.size(); i++) {
cityList.add(cityArrayList.get(i).getCinemaCity());
citySelector.CinemaCitySelector2(
CinemaCityMoviePickerActivity.this, ss, cityList,2);
}
}
private void getCityListWithSpinner(){
cityListRequest=new cityListRequest(new AsyncListener(){
@凌驾
public void异步操作已成功(对象对象对象,int队列){
System.out.println(“Objemizzz”+obj.toString());
cityarylist=(ArrayList)obj;
微调器ss=(微调器)findViewById(R.id.cityfilmspinner);
CinemaCitySelector 2 citySelector=新建CinemaCitySelector 2();
城市列表。添加(“Seçnizing”);
对于(int i=0;i
电影城市选择器:
public class CinemaCitySelector2 implements OnItemSelectedListener {
Context context2;
Spinner spinner2;
CityListInCityRequest cityListInCityRequest2;
ArrayList<Cinema> cityListInCityArrayList2;
ListView list_cinema_movie_selectorr2;
CinemaListViewAdapter2 adapter2;
View row2;
int act2 = 0;
Spinner cityspinner;
public void CinemaCitySelector2(Context context, Spinner spinner,
ArrayList<String> cityList, int activityfrom) {
this.context2 = context;
this.spinner2 = spinner;
act2 = activityfrom;
// Declaring an Adapter and initializing it to the data pump
ArrayAdapter adapter = new ArrayAdapter(context,
android.R.layout.simple_list_item_1, cityList);
// Setting Adapter to the Spinner
spinner.setAdapter(adapter);
// Setting OnItemClickListener to the Spinner
spinner.setOnItemSelectedListener(CinemaCitySelector2.this);
}
// Defining the Callback methods here
public void onItemSelected(AdapterView parent, View view, int pos, long id) {
String city = spinner2.getItemAtPosition(pos).toString();
LayoutInflater layoutInflater = LayoutInflater.from(context2);
row2 = layoutInflater.inflate(
R.layout.activity_cinemacitymoviepicker, null, false);
list_cinema_movie_selectorr2 = (ListView) row2
.findViewById(R.id.listfilmincinema);
if (!city.equals("Seçiniz")) {
cityListInCityRequest2 = new CityListInCityRequest(
new AsyncListener() {
@Override
public void asyncOperationSucceded(Object obj, int queue) {
// adapter.clear();
// adapter.notifyDataSetChanged();
// list_cinema_movie_selector.setAdapter(adapter);
System.out.println("Objemizzz " + obj.toString());
cityListInCityArrayList2 = (ArrayList<Cinema>) obj;
// adapter.notifyDataSetChanged();
adapter2 = new CinemaListViewAdapter2(context2,
R.layout.cinema_list,
cityListInCityArrayList2);
list_cinema_movie_selectorr2
.setAdapter(adapter2);
}
@Override
public void asyncOperationFailed(Object obj, int queue) {
// TODO Auto-generated method stub
System.out.println("Objemizzz2 " + obj.toString());
}
}, city);
}
}
public void onNothingSelected(AdapterView arg0) {
// TODO Auto-generated method stub
}
}
公共类CinemaCitySelector2实现OnItemSelectedListener{
语境2;
喷丝器喷丝器2;
citylincityrequest citylincityrequest 2;
ArrayList CityStincityArrayList 2;
列表视图列表\电影院\电影\选择器2;
CinemaListViewAdapter2适配器2;
查看第2行;
int act2=0;
旋转器城市旋转器;
public void CinemaCitySelector2(上下文、微调器、微调器、,
ArrayList cityList,int activityfrom){
this.context2=上下文;
this.spinner2=微调器;
act2=来自的活动;
//声明适配器并将其初始化到数据泵
ArrayAdapter=新的ArrayAdapter(上下文,
android.R.layout.simple_list_item_1,cityList);
//将适配器设置为微调器
旋转器。设置适配器(适配器);
//将McClickListener设置为微调器
spinner.setOnItemSelectedListener(CinemaCitySelector2.this);
}
//在这里定义回调方法
已选择公共位置(AdapterView父项、视图、整数位置、长id){
String city=spinner2.getItemAtPosition(pos.toString();
LayoutInflater LayoutInflater=LayoutInflater.from(context2);
第2行=更平。充气(
R.layout.activity_cinemacitymoviepicker,null,false);
列表\影院\电影\选择器2=(列表视图)第2行
.findViewById(R.id.listfilmincinema);
如果(!city.equals(“Seçinizing”)){
cityListInCityRequest2=新的CityListInCityRequest(
新的AsyncListener(){
@凌驾
public void异步操作已成功(对象对象对象,int队列){
//适配器。清除();
//adapter.notifyDataSetChanged();
//列表\电影\电影\选择器.setAdapter(适配器);
System.out.println(“Objemizzz”+obj.toString());
citylistincityraylist2=(ArrayList)obj;
//adapter.notifyDataSetChanged();
adapter2=新的CinemaListViewAdapter2(上下文2,
R.layout.cinema_列表,
城市区域城市射线清单2);
列表\电影院\电影\选择器2
.设置适配器(适配器2);
}
@凌驾
public void异步操作失败(对象对象对象,int队列){
//TODO自动生成的方法存根
System.out.println(“objemizz2”+obj.toString());
}
},城市);
}
}
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
}
CinemaListViewAdapter2:
public class CinemaListViewAdapter2 extends ArrayAdapter<Cinema> {
Context context;
int arraycount=0;
public CinemaListViewAdapter2(Context context, int resourceId,
ArrayList<Cinema> items) {
super(context, resourceId, items);
this.context = context;
arraycount=items.size();
}
/*private view holder class*/
private class ViewHolder {
BlackBrandTextview cinemaName;
RelativeLayout cinemalist;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
Cinema rowItem = getItem(position);
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.cinema_list, null);
holder = new ViewHolder();
holder.cinemaName = (BlackBrandTextview) convertView.findViewById(R.id.txt_cinema_name);
holder.cinemalist=(RelativeLayout)convertView.findViewById(R.id.cinemalist);
holder.cinemaName.setText(rowItem.getCinemaName());
if(rowItem.getCinemaDistance()<5000){
holder.cinemalist.setBackgroundColor(context.getResources().getColor(R.color.Cinema_Pink));
holder.cinemaName.setTextColor(context.getResources().getColor(R.color.Cinema_Black));
}
else{
holder.cinemalist.setBackgroundColor(context.getResources().getColor(R.color.Cinema_Black));
holder.cinemaName.setTextColor(context.getResources().getColor(R.color.White));
}
convertView.setTag(holder);
} else{
holder = (ViewHolder) convertView.getTag();
holder.cinemaName.setText(rowItem.getCinemaName());
}
if(rowItem.getCinemaDistance()<5000){
holder.cinemalist.setBackgroundColor(context.getResources().getColor(R.color.Cinema_Pink));
holder.cinemaName.setTextColor(context.getResources().getColor(R.color.Cinema_Black));
}
else{
holder.cinemalist.setBackgroundColor(context.getResources().getColor(R.color.Cinema_Black));
holder.cinemaName.setTextColor(context.getResources().getColor(R.color.White));
}
holder.cinemaName.setText(rowItem.getCinemaName());
return convertView;
}
公共类CinemaListViewAdapter2扩展了ArrayAdapter{
语境;
int arraycount=0;
公共CinemaListViewAdapter2(上下文,int-resourceId,
ArrayList项目){
超级(上下文、资源ID、项目);
this.context=上下文;
arraycount=items.size();
}
/*私有视图持有者类*/
私有类视窗持有者{
BlackRandTextView电影名称;
相对年轻电影列表;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
电影院rowItem=getItem(位置);
LayoutInflater mInflater=(LayoutInflater)上下文
.getSystemService(活动.布局\充气机\服务);
if(convertView==null){
convertView=mInflater.充气(R.layout.cinema_列表,空);
holder=新的ViewHolder();
holder.cinemaName=(BlackRandTextView)convertView.findViewById(R.id.txt\u cinema\u name);
holder.cinemalist=(RelativeLayout)convertView.findViewById(R.id.cinemalist);
holder.cinemaName.setText(rowItem.getCinemaName());
如果(rowItem.getCinemaDistance()我建议您拨打
adapter2.notifyDataSetChange();
但无论如何,没有必要每次都初始化一个新的适配器。
您应该在适配器内创建如下方法:
public void setMyArray(ArrayList<Cinema> items) {
myArray.clear();
myArray.addAll(items);
notifyDataSetChange();
}
public void setMyArray(ArrayList项){
myArray.clear();
myArray.addAll(items);
notifyDataSetChange();
}
选择微调器上的某个项目后,我将创建一种方法来更新适配器:
cityspinner.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
city = (String) parent.getItemAtPosition(position);
resetCinema(city); //or onRestart();
}
public void onNothingSelected(AdapterView<?> parent){
}
});
或者只需调用整个活动的刷新:
protected void onRestart() {
Intent refresh = new Intent(this, Main.class);
startActivity(refresh);//Start the same Activity
finish(); //finish Activity.
}
为什么要在选定的微调器上膨胀另一个布局?我建议从微调器值更新初始列表,然后更新初始适配器-请参阅
protected void onRestart() {
Intent refresh = new Intent(this, Main.class);
startActivity(refresh);//Start the same Activity
finish(); //finish Activity.
}