2012-03-07 124 views
6

我一直在嘗試尋找解決方案,但收效甚微。 我必須顯示一個彈出窗口包含項目列表。 我能夠顯示窗口,但onitemclicklistener不是在點擊列表視圖中的項目時被調用。任何有關這個問題的幫助將不勝感激。如何使項目在列表視圖中可點擊?

由於

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默認的ListView是點擊。 – 2012-03-07 06:26:37

回答

-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(); 
    } 

} 

//第一頁

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」,以便它將加載任何活動意味着在該彈出窗口上的列表視圖 – Ramz 2012-03-07 06:20:54

+0

只有當我們擴展listactivity類時,OnListItemClick纔會被覆蓋。但我想在彈出窗口中顯示列表。 – user1253887 2012-03-07 06:33:26

+0

請使用此代碼更新和測試(工作代碼) – Ramz 2012-03-08 04:02:37

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> 

我認爲你這樣做,但有時我們錯過甚至明顯:)

編輯:

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... 
    } 
}); 

編輯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

列表中的項目是字符串,是否可以將這些項目設置爲可點擊。我很抱歉,如果在這裏丟失任何東西。我是一個初學者在android – user1253887 2012-03-07 06:23:36

+0

你不應該...這裏是[Android教程](http://developer.android.com/resources/tutorials/views/hello-listview.html)如果你沒有'沒有看到它。我相信你可以使用setOnItemClickListener來獲得你想要的行爲。 – 2012-03-07 06:38:09

+0

你是對的,但是當這個顯示只包含listview的時候,這是正確的。嘗試創建一個線性佈局並添加列表視圖到這個線性佈局。然後在onitem單擊監聽器不會工作 – user1253887 2012-03-07 06:50:21

0

插入對任何列表視圖項該物業

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(); 
     } 
}); 
相關問題