gpt4 book ai didi

java - 如何在android中的 ListView 中膨胀 GridView ?

转载 作者:行者123 更新时间:2023-12-01 15:05:39 25 4
gpt4 key购买 nike

所以我意识到我不能将其他元素放入android gridview中,也不能将gridview放入 ScrollView 中,所以我尝试将gridview粘贴到只有1个listview列的android listview中,看看我是否可以做到这一点,这是成功的,但是当我尝试膨胀列表内的 gridview 时,我在设置实际网格适配器的地方不断收到 nullpointerException ,是否有另一种方法可以解决此问题?

package com.listtest.testit;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;

public class ListTestActivity extends Activity {

ViewGroup footer;
LayoutInflater inflater;
List<String> theStrings = new ArrayList<String>();
ListAdapter adapter;
ListView list;
GridView grid;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

theStrings.add("");

String[] numbers = new String[] {
"A", "B", "C", "D", "E",
"F", "G", "H", "I", "J",
"K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z"};

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

inflater = getLayoutInflater();
footer = (ViewGroup) inflater.inflate(R.layout.footer, list, false);
list.addFooterView(footer, null, false);

adapter = new ListAdapter(this, theStrings);
list.setAdapter(adapter);

ArrayAdapter<String> gridAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, numbers);

grid.setAdapter(gridAdapter);

list.setOnScrollListener(new OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
// Do nothing
}

public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {

final int lastItem = firstVisibleItem + visibleItemCount;

// threshold being indicator if bottom of list is hit
if (lastItem == totalItemCount) {

//addMoreToArray();
//adapter.notifyDataSetChanged();
}
}
});
}

public class ListAdapter extends BaseAdapter {

private Activity activity;
private List<String> data;
private LayoutInflater inflater=null;


public ListAdapter(Activity a, List<String> theStrings) {
activity = a;
data=theStrings;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {
return data.size();
}

public Object getItem(int position) {
return position;
}

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

public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.item, null);

grid=(GridView)vi.findViewById(R.id.gridView1);

return vi;
}
}

private void addMoreToArray() {

theStrings.add("");

}

}

最佳答案

It说你正在尝试的方法不是好方法,尽管他介绍了如何在 ListView 中管理 GridView 。

这里说的是......这里的问题是,GridView 和 ListView 本身都是可滚动的,将可滚动容器嵌入到另一个可滚动容器中并不是一个好方法。

<小时/>

Google 市场应用和 Google 音乐应用仅使用 ListView 。没有 ScrollView !(我检查了层次结构 View )。仅使用 ListView 会有点麻烦。因为 getView() 会更复杂。但它确实如你所愿效果很好(我终于用这种方式成功了)。

关于java - 如何在android中的 ListView 中膨胀 GridView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12990461/

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