2017-12-03 6 views
0

私はこのような選択した項目の位置を取得しようとしている:、onItemClickListener

//more code (adapter settings etc) 
List.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
        String selected_item= String.valueOf(adapterView.getItemAtPosition(i)); 
        position=(Integer)List.getTag(); //without this line it doesn't crash 
        Toast.makeText(Main2Activity.this,"Please Log-In"+selected_item+"Thesi :"+String.valueOf(position),Toast.LENGTH_SHORT).show(); 
        Intent toy = new Intent(Main2Activity.this,Main3Activity.class); 
        startActivity(toy); 
       } 
      }); 

それは私のアプリをクラッシュになります。

目標:私はあることを言及してみましょう

12-03 18:16:31.858 4421-4421/gr.aegean.icsd.myapplication W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView 

:私は、パブリック変数(位置)で選択した項目

Logcatの 位置を持っていると思います私はアンドロイドスタジオで新しいです。

+0

私たちにあなたのlogcatを表示してください –

+0

あなたはこれがあなたを助けるかもしれないと思う、以下のリンクを見てください。 [リンクを見る](https://stackoverflow.com/questions/4834750/how-to-get-the-selected-item-from-listview) –

+0

私はlogcat – Phill

答えて

1

リスナーを追加するListViewがあると思います。この場合、onItemClick(AdapterView adapterView、View view、int i、long l)メソッドでは、3番目のパラメータint iがその位置を保持します。

編集: あなたが別のアクティビティに私int型を使用したい場合は、最も簡単な方法は、setOnItemclickが同じ活動に静的クラス変数を宣言することです。例:次に

class MainActivity extends Activity{ 
    // variable accessible from anywhere in your package 
    static int global_int; 

    // other usual code... 

    // your existing code 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
       String selected_item= String.valueOf(adapterView.getItemAtPosition(i)); 
       position=(Integer)List.getTag(); //without this line it doesn't crash 
       Toast.makeText(Main2Activity.this,"Please Log-In"+selected_item+"Thesi :"+String.valueOf(position),Toast.LENGTH_SHORT).show(); 
       Intent toy = new Intent(Main2Activity.this,Main3Activity.class); 
       startActivity(toy); 

       // saving "i" 
       global_int=i; 
      } 
     }); 

} 

あなたのコード内の他の場所、他の活性などからあなたは、このようにアクセス:

int get_global_int=MainActivity.global_int; 

はSharedPreferencesでそれを保存するような他の方法がありますが、これはあります最も簡単なもの。

+0

確かに、それは本当に簡単でした。今私がしなければならないことは、それを別の変数に格納することだけです。あなたの返信ありがとう – Phill

+0

どのように私は別の活動で '私'を使用することができますか? – Phill

1

これを試すと、選択した項目の値とその位置が表示されます。

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) 
    { 
     String selectedFromList =(String) (listview.getItemAtPosition(position).toString()); 
     Log.d("Selected: ", selectedFromList); 


     int selectedItemPosition = listview.getItemAtPosition(position)); 

     Log.d("Selected item position :- ", selectedItemPosition); 

    } 
}); 

私はINT変数selectedItemPositionで選択された項目の位置を記憶され、修正されたコード上記参照、int型の変数では、この物品位置を格納することができます。あなたはどこでもこのselectedItemPositionを使うことができます。

+0

私はlog catでそれをクリックするとアイテムを手に入れます、私は尊敬できるポジションを保存し、別のアクティビティで使用しようとします – Phill

+0

変更されたコードをチェックしてください、それはあなたの問題を解決し、upvoteを得ることを願っています。 – Thunder

+0

それはちょうど私がそれがグローバルであることを望みます – Phill

関連する問題