首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将单击设置为不可见的项

将单击设置为不可见的项
EN

Stack Overflow用户
提问于 2015-05-04 04:30:14
回答 2查看 78关注 0票数 0

因此,我已经四处寻找了大约4个小时,也许我只是不知道如何词我的搜索,但我没有找到我需要什么。

我正在使用一个自定义适配器来从我存储到sqlite数据库中的项目中设置我的列表视图。我的游标向我的适配器发送id、name、product_id、data、datetime。但是我的适配器被设置为只显示名称、数据和日期时间。

我需要能够点击名称,但让它转到我的下一个活动,并显示从product_id发送到适配器的信息。例如,我点击苹果,但它实际上是product_id 505在我的数据库。除非我将product_id设置为文本视图,否则当我单击项目时,它不会显示正确的列表并搜索Apple。

如果不清楚,请告诉我,我会更好地解释。

编辑**

我的数据库是这样的

_ID _

我的ListView显示:苹果-鲜苹果-枣-鲜橙-枣-猕猴桃-新鲜猕猴桃-枣-新鲜坚果-枣

当我单击Apples时,我希望它将PRODUCT_ID返回给我,而不是_ID,这样我就可以将该product_id传递给我的下一个意图。

我的显示列表

代码语言:javascript
复制
public void displayListView()
{
    DatabaseOperations db = new DatabaseOperations(this);
    Cursor cursor = db.getProducts();

    dataAdapter = new MainActivityAdapter(
            this,
            cursor,
            0);

    ListView listView = (ListView) findViewById(R.id.product_list);
    // Assign adapter to ListView
    listView.setAdapter(dataAdapter);

    // listening to single list item on click
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long ID)
        {
            TextView listText = (TextView) view.findViewById(R.id.name);
            String product_name = listText.getText().toString();

            Intent i = new Intent(MainActivity.this, product_detail.class);
            i.putExtra("productName", product_name);
            MainActivity.this.startActivity(i);
        }
    });

    db.close();
}

我的适配器

代码语言:javascript
复制
public class MainActivityAdapter extends CursorAdapter
{
private LayoutInflater cursorInflater;
private Context c;

// Default constructor
public MainActivityAdapter(Context context, Cursor cursor, int flags)
{
    super(context, cursor, flags);
    cursorInflater = (LayoutInflater) context.getSystemService(
            Context.LAYOUT_INFLATER_SERVICE);

    c = context;

    // Log.i("Custom-Adapter", "Starting up");
}

public void bindView(View view, Context context, Cursor list)
{
    TextView PN = (TextView) view.findViewById(R.id.product_name);
    TextView PI = (TextView) view.findViewById(R.id.product_data);
    TextView date = (TextView) view.findViewById(R.id.date);

    // SET OUR DATA FROM OUR CURSOR
    String pn = list.getString( list.getColumnIndex("pn"));
    String pi = list.getString( list.getColumnIndex("pi"));;

    // NEED TO RECONVERT DATE THEN SHOW IT
    Long millidate = list.getLong(list.getColumnIndex("dateTime"));
    Date myDateNew = new Date(millidate);
    String Sdate = getDate(millidate);

    PN.setText(pn);
    PI.setText(pi);
    date.setText(Sdate);
}

public static String getDate(long milliSeconds)
{
    Calendar cl = Calendar.getInstance();
    cl.setTimeInMillis(milliSeconds);  //here your time in miliseconds
    String date = "" + cl.get(Calendar.DAY_OF_MONTH) + ":" + cl.get(Calendar.MONTH) + ":" + cl.get(Calendar.YEAR);
    String time = "" + cl.get(Calendar.HOUR_OF_DAY) + ":" + cl.get(Calendar.MINUTE) + ":" + cl.get(Calendar.SECOND);

    return date;
}

public View newView(Context context, Cursor cursor, ViewGroup parent)
{
    //Log.i("Custom-Adapter", "newView Started");
    // R.layout.list_row is your xml layout for each row
    return cursorInflater.inflate(R.layout.activity_list, parent, false);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-04 04:48:41

当我点击名称Apples时,我想得到product_id。

我们可以通过多种方式实现这一目标,但最常见的方法是:

选项1:

使用setTag方法在TextView中保存具有名称的产品的id

代码语言:javascript
复制
  PN.setText(pn);
  PN.setTag((list.getInt(list.getColumnIndex("product_id"))).toString());

现在使用getTag方法在onItemClick中获得单击的产品product_id

代码语言:javascript
复制
String product_name = listText.getText().toString();
int product_id = Integer.parseInt(listText.getTag().toString());

备选方案2:

不要从TextView中获取产品名称,而是使用onItemClick中的Adapter单击行游标:

代码语言:javascript
复制
Cursor cursor = (Cursor) dataAdapter.getItem(position);
String product_name = cursor.getString(cursor.getColumnIndex("pn"));
int product_id = cursor.getInt(cursor.getColumnIndex("product_id"));
....
票数 0
EN

Stack Overflow用户

发布于 2015-05-04 04:41:59

一个很好的选择是创建一个数组并存储所有名称的product_ids。

Goto > strings创建一个字符串数组。

然后从数组中获取名称的相关product_id。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30022643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档