質問

Problem: Trying to output the description of the selected listview. My code is below, and I also have an example of what my listview looks like as well as the code that creates it. I have a custom listview that shows three values, when I click the 2nd line (3/12/04 Gas $60.00) I want it to output the description ("Gas").

The onItemClick is where my issue is in ItemMenuActivity.

Thanks for your help and time!


Example Data in listview:

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>
役に立ちましたか?

解決

In your onItemClick() method you're doing

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

to get your TextView. This matches the XML you posted (add_item_layout.xml), but your adapter code tells a different story.

In your adapter, for new rows you are inflating custom_item_listview_layout and your "description" TextView ID is R.id.descriptionTextView.

So if you make this edit in onItemClick(), it should solve your problem:

TextView editTextDescription = ((TextView)view.findViewById(R.id.descriptionTextView));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top