gpt4 book ai didi

Android:BaseAdapter 和 getLayoutInflater 在单独的类文件上

转载 作者:IT老高 更新时间:2023-10-28 23:02:17 29 4
gpt4 key购买 nike

现在,为了填充我的 GridView,我在我的每个 Android Activity (其中大部分)上使用了扩展的 BaseAdapter 类。

为了更易于阅读和维护,我尝试将所有 BaseAdapter 代码放在一个单独的类文件中。

为了填充 GridView,我使用了 LayoutInflater,这就是事情变得棘手的地方......

由于 getLayoutInflater() 来自 android.Activity,它只是无法解决问题。我尝试使我的 Adapter.java(填充 GridViews 的类)成为扩展的 Activity 类,然后在内部创建 BaseAdapter 类(我现在这样做的方式),但我无法使其正常工作。

Adapter.java 的外观如下:

//Adapter.java
package com.cimp.matitec;

import greendroid.app.GDActivity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class Adapter extends GDActivity{

public class ImageAdapter extends BaseAdapter
{
Context MyContext;
int count;
String[] nombre;

public ImageAdapter(Context _MyContext, int n, String[] nombre)
{
MyContext = _MyContext;
count = n;
this.nombre = nombre;
}

public int getCount()
{
/* Set the number of element we want on the grid */
return count;
}

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

if ( convertView == null )
{
/*we define the view that will display on the grid*/

//Inflate the layout
LayoutInflater li = getLayoutInflater();
MyView = li.inflate(R.layout.grid_item, null);

// Add The Text!!!
TextView tv = (TextView)MyView.findViewById(R.id.grid_item_text);
tv.setText(nombre[position]+"");

// Add The Image!!!
ImageView iv = (ImageView)MyView.findViewById(R.id.grid_item_image);
iv.setImageResource(R.drawable.ic_launcher);
}

return MyView;
}

@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
}
}

要从外部调用它,我执行以下操作:

//MainClass.java
Adapter MyGridAdapter = new Adapter();
MyGrid = (GridView)findViewById(R.id.grid);
MyGrid.setAdapter(MyGridAdapter.new ImageAdapter(this, 6, nombreTema));

应用程序运行,但在尝试填充时,我得到了 NullPointerException getLayoutInflater()。

有人知道我缺少什么,或者如何使它正常工作?

最佳答案

除了直接从 Activity 获取 LayoutInflater 对象外,还有更多方法。事实上,getLayoutInflater() 可能只是一个方便的方法:

LayoutInflater li = (LayoutInflater) myContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

请参阅 LayoutInflater 的文档.

关于Android:BaseAdapter 和 getLayoutInflater 在单独的类文件上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8662494/

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