2017-02-18 7 views
0

Мой код заполняет имена пакетов из файла .txt в ListView, и я хочу, чтобы каждый элемент списка открывался в Google Play Store при нажатии. Как получить элемент списка (имя пакета)?Как получить позицию позиции списка в виде списка?

startActivity(new Intent(
      Intent.ACTION_VIEW, 
      Uri.parse("http://play.google.com/store/apps/details?id=" 
        + "com.utorrent.client"))); 

Мой список вид:

try { 
     String filePath = Environment.getExternalStorageDirectory() 
       .getAbsolutePath() + "/vers.txt"; 
     BufferedReader br = new BufferedReader(new InputStreamReader(
       new FileInputStream(filePath), "Cp1252"), 100); 

     String line; 
     ArrayList<String> lines = new ArrayList<String>(); 
     while ((line = br.readLine()) != null) { 
      lines.add(line); 
     } 

     br.close(); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, lines); 

     listView1.setAdapter(adapter); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+1

Может быть, вы должны использовать 'OnItemClickListener' на вашем' ListView' – Karakuri

ответ

3

Установите onItemClickListener на вашем ListView, а затем с позиции щелкнули пункта получить этот пункт из вашего DataList.

listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" 
       + lines.get(position)))); 
    } 
}); 
+0

@joey Из вашего кода строки являются ArrayList, где хранятся имена пакетов. Поэтому попробуйте поместить ArrayList lines = new ArrayList <>(); как глобальную переменную. –

+0

no нет необходимости использовать этот глобальный переменный адаптер для этой цели –

+0

Этот ответ может открыть ссылку на ваше приложение в браузере. Чтобы открыть Google Play Store, используйте 'Uri.parse (" market: // details? Id = "+ lines.get (position))' вместо всего URL. –

0

Try ниже код

try{ 
    InputStream inputreader = getAssets().open("vers.txt"); 
    BufferedReader buffreader = new BufferedReader(new InputStreamReader(inputreader)); 

    /* Enter your code here */ 
} 
+0

Это не отвечает вопрос – Redman

1

Вот код для вас. Я реализовал то же самое, используя этот код:

listView.setOnItemClickListener(
      new AdapterView.OnItemClickListener(){ 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        String recipes = String.valueOf(parent.getItemAtPosition(position)); 
        Toast.makeText(Main22Activity.this, recipes, Toast.LENGTH_LONG).show(); 
        Intent intent = new Intent(android.content.Intent.ACTION_VIEW); 
        intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=my packagename ")); 
        startActivity(intent); 

Надеюсь, это поможет! :)

0

Хотя этот вопрос уже имеет ответ, но мой ответ правильный способ получить элемент определенной позиции

mListView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Object obj = mListView.getAdapter().getItem(position); 
     //Now this object has everything you need to get 

    } 
});