[英]Android custom listview row wont let me add
I have a listview which is working fine just using simple_list_view1. 我有一个列表视图,仅使用simple_list_view1即可正常工作。 But now I need to add an icon to the left. 但是现在我需要在左侧添加一个图标。 So i've created a iconrow.xml in res/layout/. 因此,我在res / layout /中创建了一个iconrow.xml。 When I try and set that as the layout it errors and wont let me use android.R.layout.iconrow,
. 当我尝试将其设置为布局时,会出错,并且不会让我使用android.R.layout.iconrow,
Clearly i'm doing something wrong here! 显然我在这里做错了! It's an array being built up that will populate the data. 这是一个将填充数据的数组。
My xml is: 我的xml是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_delete" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
My code is: 我的代码是:
Cursor c = db.rawQuery(SQLStatement, null); 游标c = db.rawQuery(SQLStatement,null);
if(c.getCount() != 0) { if(c.getCount()!= 0){
Log.e("LocationListView", "Found Items");
c.moveToFirst();
ArrayList mItemName = new ArrayList(); ArrayList mItemName = new ArrayList(); final ArrayList mItemID = new ArrayList(); final ArrayList mItemID = new ArrayList();
c.moveToFirst();
while(!c.isAfterLast()) {
mItemName.add(c.getString(c.getColumnIndex("Name")));
mItemID.add(c.getString(c.getColumnIndex(ColType)));
c.moveToNext();
}
rowCount = mItemName.size();
listView = (ListView) findViewById(R.id.lvLocation);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.iconrow, android.R.id.text1, mItemName);
int[] colors = {0, 0xFFFF0000, 0};
listView.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
listView.setDividerHeight(1);
listView.setAdapter(adapter);
listView.setClickable(true);
The error is on the android.R.layout.iconrow 错误在android.R.layout.iconrow上
Any help will be appreciated. 任何帮助将不胜感激。
Tom 汤姆
EDIT: Here is my code now - The errors on tv.setText(mItemName.get(arg0).toString()); 编辑:这是我现在的代码-tv.setText(mItemName.get(arg0).toString())上的错误;
c.moveToFirst();
final ArrayList<String> mItemID = new ArrayList<String>();
c.moveToFirst();
while(!c.isAfterLast()) {
mItemName.add(c.getString(c.getColumnIndex("Name")));
mItemID.add(c.getString(c.getColumnIndex(ColType)));
c.moveToNext();
}
rowCount = mItemName.size();
listView = (ListView) findViewById(R.id.lvLocation);
// final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
// R.layout.iconrow, R.id.text, mItemName);
tv.setText(mItemName.get(arg0).toString());
int[] colors = {0, 0xFFFF0000, 0};
listView.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors));
listView.setDividerHeight(1);
listView.setAdapter(new CustomAdapter());
listView.setClickable(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Object o = listView.getItemAtPosition(position);
String StationObjectID = mItemID.get(position);
Intent SwapPage = new Intent(arg1.getContext(), LocationListView.class);
SwapPage.putExtra("ID", StationObjectID);
SwapPage.putExtra("Type", Type);
startActivityForResult(SwapPage, 0);
}
});
} else {
Log.e("LocationListView", "Not Found Items");
Context context = getApplicationContext();
CharSequence text = "No data returned";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
db.close();
}
public void goBack(View view) {
if(Global.returnPage.equals("MainPage")) {
Intent addItem = new Intent(view.getContext(), MainPage.class);
startActivityForResult(addItem, 0);
} else {
Intent addItem = new Intent(view.getContext(), LocationListView.class);
addItem.putExtra("Type", Global.stepListType);
Log.e("PushThrough", Global.stepListType);
addItem.putExtra("ID", Global.stepListID);
Log.e("PushThrough", Global.stepListID);
startActivityForResult(addItem, 0);
}
}
public void addItem(View view){
Intent addItem = new Intent(view.getContext(), AddItem.class);
addItem.putExtra("Count", rowCount);
if(Adding.equals("Building")){
addItem.putExtra("Type", "0");
} else if(Adding.equals("Room")){
addItem.putExtra("Type", "1001");
addItem.putExtra("PrevID", dataID);
} else if (Adding.equals("Area")){
addItem.putExtra("Type", "532");
addItem.putExtra("PrevID", dataID);
}
startActivityForResult(addItem, 0);
}
public void onResume()
{
super.onResume();
Log.e("Tom", "resumed");
}
class CustomAdapter extends BaseAdapter
{
@Override
public int getCount() {
// TODO Auto-generated method stub
return mItemName.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
LayoutInflater inf=getLayoutInflater();
View v=inf.inflate(R.layout.iconrow, arg2,true);
ImageView iv=(ImageView)v.findViewById(R.id.icon);
TextView tv=(TextView)v.findViewById(R.id.text);
return v;
}
}
}
Create custom Adapter as 创建自定义适配器为
class CustomAdapter extends BaseAdapter
{
@Override
public int getCount() {
// TODO Auto-generated method stub
return mItemName.size;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
LayoutInflater inf=getLayoutInflater();
View v=inf.inflate(R.layout.iconrow, arg2,true);
ImageView iv=(ImageView)v.findViewById(R.id.icon);
TextView tv=(TextView)v.findViewById(R.id.text);
return v;
}
}
and then set this to your list as 然后将其设置为
listview.setAdapter(new CustomAdapter());
Another implementation is as follows: 另一种实现如下:
public class CustomArrayAdapter extends ArrayAdapter<Applications>{
private MainActivity context;
private int layoutResourceId;
private int textresourceId;
ArrayList<Applications> objects=null;
public CustomArrayAdapter(MainActivity context, int resource,ArrayList<Applications> objects) {
super(context, resource);
this.context = context;
this.layoutResourceId = resource;
this.objects = objects;
Log.d("CustomArrayAdapter","Was here!!");
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return objects.size();
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inf=getLayoutInflater();
View convertView=inf.inflate(R.layout.iconrow, arg2,true);
ImageView iv=(ImageView)v.findViewById(R.id.icon);
TextView tv=(TextView)v.findViewById(R.id.text);
return convertView;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.