2012-03-07 14 views
6

私は解決策を模索しようとしてきましたが、ほとんど成功しませんでした。 私はのポップアップウィンドウを表示しなければなりません。 は、リストビューの項目をクリックしても呼び出されていません。この問題に関わる助けをいただければ幸いです。リストビューでアイテムをクリックする方法は?

おかげ

EDIT1:上記のコードで

public class PopUpWindowActivity extends Activity { 

    /** Called when the activity is first created. */ 
    String[] countries = new String[] { 
     "India", "USA", "Canada" 
    }; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     LinearLayout ll = new LinearLayout(this); 
     ListView lv = new ListView(this); 
     lv.setAdapter(new ArrayAdapter <String> (this, android.R.layout.simple_list_item_1, countries)); 
     lv.setOnItemClickListener(new OnItemClickListener() { 

       public void onItemClick(AdapterView <? > arg0, View arg1, int arg2, 
        long arg3) { 
        Log.v("clicked", (String)((TextView) arg1).getText()); 
       } 

      }); 
     ll.addView(lv); 
     setContentView(ll); 
    } 
} 

は、私は、リストビューを追加し、その内部レイアウトを作成することを試みました。これにより、リストビューはクリックできなくなります。私はリストビューと共に複数の項目があるはずのポップアップウィンドウを実装しようとしているので、これを行う必要があります。

+1

あなたcode.Byのデフォルトのリストビューがクリック可能である置きます。 –

答えて

-1

編集回答

私はこのコード

をテストしている。これはあなたのために働くしてください。このサンプルを適用する//ListviewActivity.java

package com.anl.lk; 

public class ListviewActivity extends ListActivity { 

    static final String[] COUNTRIES = new String[] { 

     "Afghanistan", "Albania", "Algeria", "American Samoa", 
      "Andorra", "Angola", "Anguilla", "Antarctica", 
      "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", 
      "Australia", "Austria", "Azerbaijan", "Bahrain", 
      "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", 
      "Benin", "Bermuda", "Bhutan", "Bolivia", 
      "Bosnia and Herzegovina", "Botswana", "Bouvet Island", 
      "Brazil", "British Indian Ocean Territory" 
    }; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setListAdapter(new ArrayAdapter <String> (this, 
       android.R.layout.simple_list_item_1, COUNTRIES)); 
     getListView().setTextFilterEnabled(true); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     super.onListItemClick(l, v, position, id); 

     new AlertDialog.Builder(this) 
      .setTitle("Hello") 
      .setMessage("from " + getListView().getItemAtPosition(position)) 
      .setPositiveButton("OK", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) {} 
      }) 
      .show(); 

     Toast.makeText(ListviewActivity.this, 
      "ListView: " + l.toString() + "\n" + 
      "View: " + v.toString() + "\n" + 
      "position: " + String.valueOf(position) + "\n" + 
      "id: " + String.valueOf(id), 
      Toast.LENGTH_LONG).show(); 
    } 

} 

// FIRSTPAGE

package com.anl.lk; 

public class FirstPage extends Activity { 

    @override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button b = (Button) findViewById(R.id.button1); 
     b.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Intent sam = new Intent(FirstPage.this, ListviewActivity.class); 
        startActivity(sam); 

       } 
      }); 
    } 
} 

//マニフェストファイル

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.anl.lk" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="8" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:label="@string/app_name" 
     android:name=".FirstPage" > 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".ListviewActivity" android:theme="@android:style/Theme.Dialog"></activity> 
</application> 

それは

+0

私はアクティビティのポップアップを表示することを意味します。対応するアクティビティのマニフェストにandroid:theme = "@ android:style/Theme.Dialog"を使用する必要があります。その結果、Load Any Activityはそのポップアップウィンドウのリストビューも意味します。 – Ramz

+0

OnListItemClickは、Listactivityクラスを拡張した場合にのみオーバーライドできます。しかし、私はポップアップウィンドウ内にリストを表示したかった。 – user1253887

+0

このコードを更新して使用してください(作業コード) – Ramz

10

がクリック可能に設定し、リスト内のリストやアイテムは、あなたのソリューションを持ってこのコードを使用してください?どちらのプログラムで...

ListView myList = (ListView) findViewById(R.id.list_view_id); 
myList.setClickable(true); 

またはXMLで...

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:clickable="true"> 
    ... 
    </ListView> 

私はあなたがいることを前提としましたが、時には私たちも明らか:)

EDIT欠場:

ここでは、Android Tutorialから、プログラムでonItemClickListenerを設定する方法があります。

ListView lv = getListView(); 
lv.setOnItemClickListener(new OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     // When clicked perform some action... 
    } 
}); 

EDIT 2:ここでは

は私のXML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ListView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/list" /> 

</LinearLayout> 

そして、ここで私のコードは

public class HelloAndroidActivity extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String[] countries = getResources().getStringArray(R.array.countries_array); 

     ListView lv = (ListView) findViewById(R.id.list); 
     lv.setAdapter(new ArrayAdapter <String> (this, R.layout.list_item, countries)); 
     lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       public void onItemClick(AdapterView <? > arg0, View view, int position, long id) { 
        // When clicked, show a toast with the TextView text 
        Toast.makeText(getApplicationContext(), ((TextView) view).getText(), 
         Toast.LENGTH_SHORT).show(); 

       } 

      }); 
    } 
} 
+0

リストの項目は文字列です。クリック可能な項目を設定することは可能ですか?私はここに何かがないと謝罪します。私はアンドロイドの初心者です – user1253887

+0

する必要はないはずです...ここには[Androidチュートリアル](http://developer.android.com/resources/tutorials/views/hello-listview.html)があります。それを見た。 setOnItemClickListenerを使用して、必要な動作を取得できます。 –

+0

正しいですが、ディスプレイにリストビューのみが含まれている場合にはこれが機能します。線形レイアウトを作成し、この線形レイアウトにリストビューを追加してみてください。次にonitemのクリックリスナーは仕事がありません – user1253887

0

ある任意のListView項目

に対して、このプロパティを挿入します
android:onClick="buttonClicked" 

、あなたのコードで

public void buttonClicked(View view) 
{ 
    //Do what you want to do.. 
} 
2
ListView myList; 
myList = (ListView)findViewById(list_vew_id_in_xml) 
myList.setOnItemClickListener(new OnItemClickListener() 
{ 
@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     { 
     //Toast.makeText(BritishCouncilActivity.this, "" + position, 2).show(); 
     } 
}); 
関連する問題