2014-02-25 53 views
0

所以我有从mysql加载数据的列表视图.. 它加载ID(知名度:消失),名称,价格,..每个列表 我想要它,当我长时间点击和上下文菜单显示和我或项目单击项目出来它会得到物品的ID发送到下一个activity..but煤矿只能得到listview..please的第一个ID帮我从列表视图中获取文本并发送到上下文菜单

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.all_products); 

    // Hashmap for ListView 
    productsList = new ArrayList<HashMap<String, String>>(); 

    // Loading products in Background Thread 
    new LoadAllProducts().execute(); 

    // Get listview 
    ListView lv = getListView(); 
    registerForContextMenu(lv); 

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 

    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle("Barang Masuk/Keluar"); 
    menu.add(0, v.getId(), 0, "Masuk"); 
    menu.add(0, v.getId(), 0, "Keluar"); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 

    if (item.getTitle() == "Masuk") { 
     String pid = ((TextView) findViewById(R.id.pid)).getText() 
     .toString(); 

     // Starting new intent 
     Intent in = new Intent(getApplicationContext(), 
       galian_barang_masuk.class); 
     // sending pid to next activity 
     in.putExtra(TAG_PID, pid); 

     // starting new activity and expecting some response back 
     startActivityForResult(in, 100); 

    } else if (item.getTitle() == "Keluar") { 
     String pid = ((TextView) findViewById(R.id.pid)).getText() 
     .toString(); 

     // Starting new intent 
     Intent in = new Intent(getApplicationContext(), 
       galian_barang_keluar.class); 
     // sending pid to next activity 
     in.putExtra(TAG_PID, pid); 

     // starting new activity and expecting some response back 
     startActivityForResult(in, 100); 
    } else { 
     return false; 
    } 
    return true; 
} 

所以,当我点击“巴西“从列表视图,然后右键菜单显示出来.. 它去的列表视图数据一号‘海神庙’

http://imageshack.com/a/img835/2201/jrth.jpg

http://imageshack.com/a/img600/7562/ftzl.jpg

,如果我在列表视图使用直接点击onitem click..its工作与此代码

lv.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
    int position, long id) { 
    String pid = ((TextView) view.findViewById(R.id.pid)).getText() 
    .toString(); 

    Intent in = new Intent(getApplicationContext(), 
    galian_barang_masuk.class); 
    in.putExtra(TAG_PID, pid); 

    startActivityForResult(in, 100); 

    } 
    }); 

但是当我使用它的背景下如何error..dunno ..

编辑:我已经找到了它..我做了新的textview ..我通过长时间点击加载ID并将其保存到新的文本视图

lv.setOnItemLongClickListener(new OnItemLongClickListener() { 

     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, 
       int pos, long id) { 
      // getting values from selected ListItem 
      String pid = ((TextView) view.findViewById(R.id.pid)).getText() 
        .toString(); 
      x = (TextView) findViewById(R.id.x); 
      x.setText(pid); 

      return false; 
     } 
    }); 

里面后onContextItemSelected我改变in.putExtra(TAG_PID, pid)in.putExtra(TAG_PID, x.getText().toString());新的TextView,我用它来收集各列表项的ID我长的点击..

回答

0

您可以使用AdapterContextMenuInfo获得从上下文菜单中选择列表项。例如,如果你有一个绑定到你的ListView字符串列表,你会得到这样的选择的项目:

@Override 
public boolean onContextItemSelected(MenuItem item) 
{ 
     AdapterView.AdapterContextMenuInfo info = 
      (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
     String listItem = list.get(info.position); 
        //do something with the list item 

} 
+0

thx for ur answer..but error at list.get(info.position);在名单上。应列出。指向ListView lv = getListView(); ..?如果我使用lv.get(info.position);仍然相同.. –

0

findViewById(R.id.pid),列表中的每个行都会有一个观点相同的ID。所以结果可以是随机的(不确定它是否总会选择第一场比赛)。在这些情况下,您可以尝试使用可以将所需值设置为视图标记的自定义适配器。 即在呈现列表行时,使用setTag方法为textview设置所需的值,然后使用getTag检索它。

+0

nope ..它不是相同的id ..它从MySQL的负载每个项目有不同的ID它加载到textview每个列表项目..当我使用onCLick它的工作在不同的listitem时打开下一个编辑项目(listitem我点击)..但它不工作,当我尝试移动到上下文菜单..帮助 这是我的数据库..像你可以看到其不同的PID(ID) http://imageshack.com/a/ img545/5865/07lx.jpg –

+0

@AmatirtaAngelo我不是指你的mysql数据。在第一种情况下,您正在执行findViewById(R.id.pid),所以根据我的假设,有多个视图具有相同的ID(R.id.pid不是动态值)。 它在listitem中的工作点击,因为您在特定行的上下文中搜索,例如view.findViewById(R.id.pid))。 希望这有助于。 – gvmani

相关问题