标签: baseadapter

从睡眠模式恢复时保持GridView

我遇到了一个非常大的GridView问题.(大约70个孩子)如果我在onCreate上启动它或者在按下主页按钮然后返回后恢复后,GridView工作正常.但是当我从睡眠模式恢复后恢复时,我的BaseAdapter再次启动并破坏了我在运行时对其所做的更改.如果我在重启后调用它,这也会使getChildAt()给出NullPointerException.

我怎样才能让它只是按常规onPause(主页按钮)对GridView进行操作,并避免每次从睡眠模式恢复时GridView被清除?

编辑:我已经尝试为我的Activity类设置一个唤醒锁,它调用BaseAdpter没有运气

2.编辑:自从我发布这个问题以来,我一直试图在onPause中使用此代码恢复GridView:

 SparseArray<Parcelable> array = new SparseArray<Parcelable>();
    gridView.saveHierarchyState(array);
    bundle = new Bundle();
    bundle.putSparseParcelableArray("state", array);
Run Code Online (Sandbox Code Playgroud)

这在onResume:

 try{
    gridView.restoreHierarchyState(bundle.getSparseParcelableArray("state"));
    }
    catch(Exception e){
        //Most likely first start
        Log.i("SomeTag", "No GridView state found");
    }

    }
Run Code Online (Sandbox Code Playgroud)

奇怪的是我在屏幕上似乎从一个地方跳到另一个地方的一切,当我尝试getChildAt()时它仍然崩溃.在睡眠模式之后它也无法获得它.

  1. 编辑这是来自BaseAdapter getView的代码(注意!这些代码中的一些是无关紧要的)

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

mParentView = parent;


DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;

    //sets the height for every individual box
int box = width/7*6/10;

ImageCell v = null;
if (convertView == null) {
    // If it's …
Run Code Online (Sandbox Code Playgroud)

lifecycle android gridview android-gridview baseadapter

12
推荐指数
1
解决办法
1571
查看次数

二进制XML文件行#17:由UnsupportedOperationException引起的类<unknown>错误:无法转换为维度:type = 0x2

我一直试图运行我的应用程序(android)但它崩溃时,以下异常

[logcat的]

  FATAL EXCEPTION: main
 android.view.InflateException: Binary XML file line #17: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:513)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
at emy.dt4it.healthytips.NavDrawerListAdapter.getView(NavDrawerListAdapter.java:46)
at android.widget.AbsListView.obtainView(AbsListView.java:1315)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1198)
at android.widget.ListView.onMeasure(ListView.java:1109)
at android.view.View.measure(View.java:8171)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:578)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:362)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
at com.slidinglayer.SlidingLayer.onMeasure(SlidingLayer.java:1077)
at android.view.View.measure(View.java:8171)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:578)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:362)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
at android.view.View.measure(View.java:8171)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
at android.view.View.measure(View.java:8171)
at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at …
Run Code Online (Sandbox Code Playgroud)

android baseadapter

12
推荐指数
1
解决办法
3万
查看次数

在Android中向ArrayList添加对象时出现NullPointerException

我正在尝试使用BaseAdapter创建一个列表视图,并且在将对象添加到ArrayList时我不断获得Null对象引用错误.

相关代码如下:

public class MainActivity extends ActionBarActivity {
    int[] icons = {R.drawable.icon01, R.drawable.icon02, R.drawable.icon03, R.drawable.icon04, R.drawable.icon05, R.drawable.icon06, R.drawable.icon07, R.drawable.icon08, R.drawable.icon09, R.drawable.icon10, R.drawable.icon11, R.drawable.icon12};
    ListView listView;
    String[] title, desc;

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

        listView = (ListView) findViewById(R.id.listView);

        Resources resources = getResources();
        title = resources.getStringArray(R.array.titles);
        desc = resources.getStringArray(R.array.desc);

        RT_Adapter rt_adapter = new RT_Adapter(this, title, desc, icons);
        listView.setAdapter(rt_adapter);
    }
}

class Creator {
    String a, b;
    int c;

    Creator(String d, String e, int f) {
        this.a = d;
        this.b …
Run Code Online (Sandbox Code Playgroud)

java android arraylist android-listview baseadapter

12
推荐指数
1
解决办法
5万
查看次数

使用哪个适配器 - BaseAdapter或ArrayAdapter?

我有一个JSON字符串,其中包含以下多个实例

  1. 名称
  2. 信息
  3. 时间戳
  4. 个人资料照片网址

我想创建一个ListView,其中每个列表将具有上述内容.对于这种特殊情况,我需要扩展哪个更好的适配器来创建自定义适配器?

android listview android-arrayadapter baseadapter

11
推荐指数
1
解决办法
1万
查看次数

如何在ListView Adapter类中实现2种不同类型的分隔符(即标题)

我通过这组代码调用适配器:

mAdapter = new MyCustomAdapter(getActivity());

mAdapter.addSeparatorItem(new ContentWrapper(q.get(0).getA_name(),null));
mAdapter.addItem(new ContentWrapper(q.get(0).getAS_name(), q.get(0).getDesc_art()));
Run Code Online (Sandbox Code Playgroud)

考虑以下代码:

private class MyCustomAdapter extends BaseAdapter {

private static final int TYPE_ITEM = 0;
private static final int TYPE_SEPARATOR = 1;
private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;

private ArrayList<ContentWrapper> mData = new ArrayList<ContentWrapper>();
private LayoutInflater mInflater;

private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>();

public MyCustomAdapter(Context context)
{
    mInflater = LayoutInflater.from(context); 
}

public void addItem(ContentWrapper value) {
    mData.add(value);
    notifyDataSetChanged();
}

public void addSeparatorItem(ContentWrapper value) {
    mData.add(value);
    // save separator …
Run Code Online (Sandbox Code Playgroud)

android listview baseadapter

11
推荐指数
1
解决办法
654
查看次数

BaseAdapter.notifyDatasetChanged()不更新ListView

当我调用notifyDatasetChanged()时,为什么我的listview没有更新?我可以让它显示数据的唯一方法是再次调用ListView上的setAdatper()...我也尝试通过runOnUIThread()调用它,它没有改变任何东西

适配器

/**
 * Adapter to provide the data for the online scores
 * 
 * @author soh#zolex
 *
 */
public class OnlineScoresAdapter extends BaseAdapter {

    private Context context;
    private List<ScoreItem> scores = new ArrayList<ScoreItem>();

    /**
     * Constructor
     * 
     * @param Context context
     */
    public OnlineScoresAdapter(Context context) {

        this.context = context;
    }

    /**
     * Add an item to the adapter
     * 
     * @param item
     */
    public void addItem(ScoreItem item) {

        this.scores.add(item);
    }

    /**
     * Get the number of scores
     * 
     * …
Run Code Online (Sandbox Code Playgroud)

android listview baseadapter

10
推荐指数
2
解决办法
1万
查看次数

Android的BaseAdapter是Adapter模式的一个例子吗?

Android的类BaseAdapter名称中是否有"Adapter",因为它遵循Adapter模式或者只是巧合?

android design-patterns adapter baseadapter

10
推荐指数
1
解决办法
3214
查看次数

如何在android中使用baseadapter刷新自定义列表视图

先生,我如何使用baseadapter刷新我的自定义列表视图.我不知道放置什么,或者将它放在我的代码中.请帮我.提前致谢

public class EditDetails extends Activity{
public String nameChanged;
public String numChanged;
public String name;
public String num;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.editdetails);
    final EditText sqlName = (EditText)findViewById(R.id.editName);
    final EditText sqlNumber = (EditText)findViewById(R.id.editNumber);
    name = CustomListView.name;
    num = CustomListView.number;
    Button bUpdate = (Button)findViewById(R.id.editUpdate);
    Button bView = (Button)findViewById(R.id.editView);
    sqlName.setText(name);
    sqlNumber.setText(num);

    bUpdate.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
            nameChanged = sqlName.getText().toString();
            numChanged = sqlNumber.getText().toString();
            GroupDb info = new GroupDb(EditDetails.this);
            info.open();
            long rowid = info.getRowId(name, num);
            info.updateNameNumber(rowid, nameChanged, numChanged);
            ArrayList<Contact> …
Run Code Online (Sandbox Code Playgroud)

android listview baseadapter

10
推荐指数
2
解决办法
4万
查看次数

创建通用基本适配器?

我有兴趣创建一个通用的BaseAdapter,它将应用于任何具有任何list_item的ListView.它将为list_view设置item_row.

    public class GenericAdapter extends BaseAdapter
    {

    Context context;

    ArrayList<HashMap<String, String>> list;

    LayoutInflater inflater;

    public GenericAdapter (Context context, ArrayList<HashMap<String, String>> list) 
        {
            this.context = context;

            this.list = list;

            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

        @Override
        public int getCount()
        {
            return list.size();
        }

        @Override
        public Object getItem(int position)
        {   
            return list.get(position);
        }

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

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

          if(view == null)
           {
            view = inflater.inflate(R.layout.item_of_any_list, …
Run Code Online (Sandbox Code Playgroud)

android layout-inflater baseadapter

10
推荐指数
1
解决办法
6389
查看次数

无法从Listview的EditText中获取值?

我正在尝试从ListView中的EditText获取数据.我看到了很多类似的问题,并得到了解决方案.但它在我的实施中抛出了一个NPE.

所以请指导我解决这个问题.

适配器

public class Coscho_adapter extends BaseAdapter {

    Context con;
    ArrayList<HashMap<String, String>> list;
    LayoutInflater mInflater;
    EditText marks;
    TextView studname, acname;

    public Coscho_adapter(Context co, ArrayList<HashMap<String, String>> list1) {
        list = list1;
        con = co;
        mInflater = (LayoutInflater) con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        return list.size();
    }

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

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

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder; …
Run Code Online (Sandbox Code Playgroud)

android listview android-edittext baseadapter

10
推荐指数
1
解决办法
1363
查看次数