【问题标题】:Android - Output value of custom listview - Getting errorsAndroid - 自定义列表视图的输出值 - 出现错误
【发布时间】:2014-03-12 16:20:58
【问题描述】:

问题:试图输出所选列表视图的描述。我的代码在下面,我还有一个关于我的列表视图的示例以及创建它的代码。我有一个显示三个值的自定义列表视图,当我单击第二行(3/12/04 Gas $60.00)时,我希望它输出描述(“Gas”)。

onItemClick 是我在ItemMenuActivity 中的问题所在。

感谢您的帮助和时间!


列表视图中的示例数据:

3/12/04 New Shoes $50.00

3/12/04 Gas $60.00

3/12/04 Food $10.00

ItemMenuActivity.java

public class ItemMenuActivity extends Activity implements AdapterView.OnItemClickListener
{
String accountName;
ArrayList<Item> item_details;
DatabaseHandler database;
ListView itemView;
private EditText dateEditText, costEditText, desEditText;
private Spinner categorySpinner;
private Button btnAddItem, btnCancel;
private boolean errlvl;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.item_menu_layout);

    // Initiate Database
    database = new DatabaseHandler(getApplicationContext());

    // Initiate/configure ListView
    itemView = (ListView)findViewById(R.id.itemListView);
    itemView.setOnItemClickListener(this);

    Bundle bundle = getIntent().getExtras();
    String account_name = bundle.getString("AccountName");
    setTitle(account_name);
    accountName = account_name;

    displaySpecificItemListView(accountName);
}


@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
    //TextView editTextDescription = ((TextView)view.findViewById(R.id.editTextDescription));
    //String temp = editTextDescription.getText().toString();
    //Toast.makeText(this, temp, Toast.LENGTH_LONG).show();
}
}

add_item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/addItemLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/textViewDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="@string/purchDateTitle"
        android:textAppearance="?android:attr/textAppearanceMedium"/>

    <EditText
        android:id="@+id/editTextDate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:textAppearance="?android:attr/textAppearanceMedium"/>

</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <EditText
        android:id="@+id/editTextDescription"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:hint="Enter Item Description"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="$ "
        android:textSize="20dp"/>

    <EditText
        android:id="@+id/editTextCost"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:hint="Enter Total Cost"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <Spinner
        android:id="@+id/categorySelectSpinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

 </LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:orientation="horizontal">

    <Button
        android:id="@+id/btnAddItem"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Add" />

    <Button
        android:id="@+id/btnCancelItem"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Cancel" />

</LinearLayout>

</LinearLayout>

ItemListViewBaseAdapter.java

public class ItemListViewBaseAdapter extends BaseAdapter
{ 
private ArrayList<Item> _data;
Context _c;

ItemListViewBaseAdapter (ArrayList<Item> data, Context c)
{
    _data = data;
    _c = c;
}

public int getCount()
{
    // TODO Auto generated method stub
    return _data.size();
}
public Object getItem(int position)
{
    // TODO Auto generated method stub
    return _data.get(position);
}
public long getItemId(int position)
{
    // TODO Auto generated method stub
    return position;
}
public View getView (int position, View convertView, ViewGroup parent)
{
    // TODO Auto generate method stub
    View v = convertView;

    if (v == null)
    {
        LayoutInflater vi = (LayoutInflater)_c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.custom_item_listview_layout, null);
    }

    TextView itemDate = (TextView)v.findViewById(R.id.dateTextView);
    TextView itemDescription = (TextView)v.findViewById(R.id.descriptionTextView);
    TextView itemAmount = (TextView)v.findViewById(R.id.amountTextView);

    Item accMsg = _data.get(position);
    itemDate.setText(accMsg.entry_date);
    itemDescription.setText(accMsg.item_description);

    //NumberFormat format
    if(accMsg.item_price > 0)
    {
        String myString = String.format("%.2f", accMsg.item_price);
        String FormattedString = "$"+myString;
        itemAmount.setText(FormattedString);
    }
    else
    {
        double temp = Math.abs(accMsg.item_price);
        String myString = String.format("%.2f", temp);
        String FormattedString = "-$"+myString;
        itemAmount.setText(FormattedString);
        itemAmount.setTextColor(Color.parseColor("#088A08"));
    }

    return v;
}
}

item_menu_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<ListView
    android:id="@+id/itemListView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:dividerHeight="0.1dp"
    android:divider="#81A594"
    android:layout_below="@+id/dateTitle"/>

</RelativeLayout>

【问题讨论】:

    标签: java android listview android-listview android-custom-view


    【解决方案1】:

    在您正在执行的 onItemClick() 方法中

    TextView editTextDescription = ((TextView)view.findViewById(R.id.editTextDescription));
    

    获取您的 TextView。这与您发布的 XML (add_item_layout.xml) 相匹配,但您的适配器代码讲述了不同的故事。

    在您的适配器中,对于您正在膨胀的新行 custom_item_listview_layout 并且您的“描述”TextView ID 是 R.id.descriptionTextView

    因此,如果您在onItemClick() 中进行此编辑,它应该可以解决您的问题:

    TextView editTextDescription = ((TextView)view.findViewById(R.id.descriptionTextView));
    

    【讨论】:

    • 谢谢,心烦意乱,我什至检查了它以确保我调用了正确的 TextView 变量。珍惜时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多