在Android的动态GridView的项目项目、动态、Android、GridView

2023-09-05 05:17:58 作者:沵若成风

嘿,我试图建立一个应用程序中,用户可以输入一些数字和这些数字 将显示在自定义网格视图中的项目一个gridview来。如果我使用了Android的共同gridview的项目它的工作原理。但是,如果我用我自己的布局它不工作。仅在第一元件 该阵列将显示。没有任何人有一个中心思想为何不起作用?

 公共类GridViewAppActivity延伸活动{

私人的ArrayList<字符串>项目;
私人GridViewAdapter适配器;

/ **第一次创建活动时调用。 * /
@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);

    项目=新的ArrayList<字符串>();
    适配器=新GridViewAdapter(本);
    GridView控件的GridView =(GridView控件)findViewById(R.id.gridView);
    gridView.setAdapter(适配器);

    最终按钮Add按钮=(按钮)findViewById(R.id.add_button);
    最后的EditText itemEditText =(EditText上)findViewById(R.id.number_field);

    //点​​击监听按钮
    addButton.setOnClickListener(新View.OnClickListener(){
        公共无效的onClick(视图v){
             items.add(itemEditText.getText()的toString());
             itemEditText.setText();
             adapter.notifyDataSetChanged();
        }
    });
}

公共类GridViewAdapter扩展了BaseAdapter {

    私人语境mContext;

    公共GridViewAdapter(上下文C){
        mContext = C;
    }

    公众诠释getCount将(){
        返回items.size();
    }

    公共对象的getItem(INT位置){
        返回items.get(位置);
    }

    众长getItemId(INT位置){
        返回的位置;
    }

    公共查看getView(INT位置,查看convertView,ViewGroup中父){
        视图V;
        如果(convertView == NULL){
            LayoutInflater李= getLayoutInflater();
            V = li.inflate(R.layout.grid_item,NULL);
            TextView的电视=(TextView中)v.findViewById(R.id.grid_item_text);
            tv.setText(items.get(位置));
        } 其他 {
            V = convertView;
        }
        返回伏;
    }

}
}
 

解决方案

试试这个,

 公开查看getView(INT位置,查看convertView,ViewGroup中父){
    视图V;

    如果(convertView == NULL){
        LayoutInflater李= getLayoutInflater();
        V = li.inflate(R.layout.grid_item,NULL);
    } 其他 {
        V = convertView;
    }

    TextView的电视=(TextView中)v.findViewById(R.id.grid_item_text);
    tv.setText(items.get(位置));

    返回伏;
}
 

哪位大神知道在Android中的GridView中,怎样通过点击单元格 item 来实现在DOWN和UP两个状态下的图片切换

Hey i'm trying to build an app in which the user can input some numbers and these numbers will be shown in a gridview with custom grid view items. If i use the common gridview items of android it works. But if i use my own layout it doesnt work. Only the first element in the array will be shown. Does anybody have a clou why this doesn't work?

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;
    }

}
}

解决方案

Try this,

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;     
}