【问题标题】:Dynamic GridView items in AndroidAndroid 中的动态 GridView 项目
【发布时间】:2011-11-05 16:30:29
【问题描述】:

嘿,我正在尝试构建一个应用程序,用户可以在其中输入一些数字和这些数字 将显示在带有自定义网格视图项的网格视图中。如果我使用 android 的常见 gridview 项目,它可以工作。但如果我使用我自己的布局,它就不起作用。只有第一个元素 将显示数组。有人知道为什么这不起作用吗?

public class GridViewAppActivity extends Activity {

private ArrayList<String> items;
private GridViewAdapter adapter;

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

    items = new ArrayList<String>();    
    adapter = new GridViewAdapter(this);
    GridView gridView = (GridView) findViewById(R.id.gridView);
    gridView.setAdapter(adapter);

    final Button addButton  = (Button) findViewById(R.id.add_button);
    final EditText itemEditText = (EditText) findViewById(R.id.number_field);

    // Click listener for Button
    addButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
             items.add(itemEditText.getText().toString());
             itemEditText.setText("");
             adapter.notifyDataSetChanged();
        }
    });
}

public class GridViewAdapter extends BaseAdapter {

    private Context mContext;

    public GridViewAdapter(Context c) {
        mContext = c;
    }

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

    public Object getItem(int position) {
        return items.get(position);
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        View v;
        if(convertView==null){
            LayoutInflater li = getLayoutInflater();
            v = li.inflate(R.layout.grid_item, null);
            TextView tv = (TextView)v.findViewById(R.id.grid_item_text);
            tv.setText(items.get(position));
        } else {
            v = convertView;
        }
        return v;
    }

}
}

【问题讨论】:

  • 看我的回答,你必须改变你的 GridViewAdapter 的 getview() 方法。就像下面给出的一样。

标签: android gridview dynamic customization


【解决方案1】:

试试这个,

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

    if(convertView == null) {
        LayoutInflater li = getLayoutInflater();
        v = li.inflate(R.layout.grid_item, null);
    } else {             
        v = convertView;         
    }

    TextView tv = (TextView)v.findViewById(R.id.grid_item_text);
    tv.setText(items.get(position));         

    return v;     
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多