嘿,我试图建立一个应用程序中,用户可以输入一些数字和这些数字 将显示在自定义网格视图中的项目一个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(位置));
返回伏;
}
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;
}