gpt4 book ai didi

android - 自定义微调器不调用自定义 ListView ?

转载 作者:行者123 更新时间:2023-11-30 02:34:06 27 4
gpt4 key购买 nike

我有一个自定义 ListView 和微调器。首先,我正在填充 ListView ,然后单击下拉微调器。我正在选择一个项目(城市)。我想用新结果更新 ListView 。但无论我可以自定义适配器getview 不调用。所以 ListView 没有更新。这是我的屏幕enter image description here

我该怎么做?

我在这里填充旋转器

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);

}

}

电影城选择器:

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

}

}

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;
}

最佳答案

我会创建一个方法来在您的微调器上选择一个项目后更新适配器:

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){
}
});

resetCinema(city) 根据城市值重新调整 View 。您可以手动执行此操作:

public void resetCinema(String city) {
//show list view elements depending on city
}

或者只是调用整个 Activity 的刷新:

protected void onRestart() {
Intent refresh = new Intent(this, Main.class);
startActivity(refresh);//Start the same Activity
finish(); //finish Activity.
}

关于android - 自定义微调器不调用自定义 ListView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com