gpt4 book ai didi

java - 在 android 的 GridView 布局中使用图像适配器时出现类转换错误

转载 作者:行者123 更新时间:2023-11-29 05:27:01 24 4
gpt4 key购买 nike

我开发了一个具有 GridView 布局的应用程序,有两项主要项目是图像,子项目是图像文本所以我使用自定义图像适配器类并在主要 Activity 中实现但我得到了类转换异常的错误在日志猫中

我的代码在这里

主类

public class MainActivity extends ActionBarActivity implements AdapterView.OnItemClickListener, AdapterView.OnItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

GridView gridView = (GridView) findViewById(R.id.gridView1);
gridView.setAdapter(new ImageAdapter(getApplicationContext()));
gridView.setOnItemClickListener(this);
gridView.setOnItemSelectedListener(this);

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {


getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

if (id == 0L)
Toast.makeText(getApplicationContext(), "Zero", 1000).show();
if (id == 1L) {
Toast.makeText(getApplicationContext(), "one", 1000).show();
}
if (id == 2L) {
Toast.makeText(getApplicationContext(), "two", 1000).show();
return;
}
if (id == 3L) {
Toast.makeText(getApplicationContext(), "three", 1000).show();
return;
}
if (id == 4L) {
Toast.makeText(getApplicationContext(), "foure", 1000).show();
return;
}
if (id == 9L) {
Toast.makeText(getApplicationContext(), "nine", 1000).show();
return;
}
if (id == 7L) {
Toast.makeText(getApplicationContext(), "seven", 1000).show();
return;
}
if (id == 8L) {
Toast.makeText(getApplicationContext(), "eight", 1000).show();
return;
}
if (id == 6L) {
Toast.makeText(getApplicationContext(), "six", 1000).show();
return;
}
if (id == 5L) {
Toast.makeText(getApplicationContext(), "five", 1000).show();
return;
}
if (id == 11L)
Toast.makeText(getApplicationContext(),"eleven",1000).show();
return;
}





@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
setTitle("Hello world");
}

@Override
public void onNothingSelected(AdapterView<?> parent) {

}

适配器类

public class ImageAdapter extends BaseAdapter {
private Context mContext;

public ImageAdapter(Context applicationContext) {
this.mContext = applicationContext;
}


@Override
public int getCount() {
return 12;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return position;
}

public int getThumbId(int position) {
switch (position) {
default:
throw new IllegalArgumentException("Error in m-Indicator home UI");
case 0:
return R.drawable.ic_launcher;
case 1:
return R.drawable.ic_launcher;
case 2:
return R.drawable.ic_launcher;
case 3:
return R.drawable.ic_launcher;
case 5:
return R.drawable.ic_launcher;
case 4:
return R.drawable.ic_launcher;
case 6:
return R.drawable.ic_launcher;
case 7:
return R.drawable.ic_launcher;
case 8:
return R.drawable.ic_launcher;
case 9:
return R.drawable.ic_launcher;
case 10:
return R.drawable.ic_launcher;
case 11:
}
return R.drawable.ic_launcher;
}

public String getThumbText(int position) {
switch (position) {
default:
throw new IllegalArgumentException("Error in m-Indicator home UI");
case 0:
return "Railway";
case 1:
return "Bus";
case 2:
return "Auto";
case 3:
return "Taxi";
case 5:
return "Jobs Indicator";
case 4:
return "Express";
case 6:
return "Manoranjan";
case 7:
return "Movies";
case 8:
return "Picnic Spots";
case 9:
return "Rail Alerts";
case 10:
return "Emergency";
case 11:
}
return "About";
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {


View localView = ((Activity) this.mContext).getLayoutInflater().inflate(R.layout.gridelement, null);
TextView localTextView = (TextView) localView.findViewById(R.id.icon_text);
localTextView.setText(getThumbText(position));
ImageView localImageView = (ImageView) localView.findViewById(R.id.icon_image);
ViewGroup.LayoutParams localLayoutParams = localImageView.getLayoutParams();
localImageView.setImageResource(getThumbId(position));
return localView;

}

最佳答案

您正在创建 ImageAdapter 对象

gridView.setAdapter(new ImageAdapter(getApplicationContext()));

这里 getApplicationContext()Application 的对象不属于 Activity .

所以行

View localView = ((Activity) this.mContext).getLayoutInflater().inflate(R.layout.gridelement, null);

getView() 抛出此异常,因为您正试图将 Application 对象转换为 Activity


所以你需要称它为

gridView.setAdapter(new ImageAdapter(MainActivity.this));

或者,不要转换上下文。

关于java - 在 android 的 GridView 布局中使用图像适配器时出现类转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22344125/

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