簡體   English   中英

ListView如何使用onClick打開新活動?

[英]How to ListView opens a new activity using onClick?

嗨,大家好。我的目標是當我想從ListView中單擊特定項目時,它會打開一個我已編程的新活動。 例如:當我單擊“João”時,希望它打開一個名為Joao的類。 我嘗試使用一個簡單的代碼,但是它不起作用。 當我從ListView中單擊João的名字時,什么都沒有發生。

這是我正在使用的代碼:

public class Searchsort extends Activity {

    private ListView lv1;
    private EditText ed;
    private String lv_arr[]={"John","Mary","Carl","Rose","Charlie","Allan", "João"};
    private ArrayList<String> arr_sort= new ArrayList<String>();
    int textlength=0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        lv1 = (ListView)findViewById(R.id.ListView01);
        ed = (EditText)findViewById(R.id.EditText01);

        // By using setAdpater method in listview we an add string array in list.

        lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 ,   lv_arr));
        ed.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable s) {

            }

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            public void onTextChanged(CharSequence s, int start, int before, int count) {
                textlength=ed.getText().length();
                arr_sort.clear();
                for(int i=0;i<lv_arr.length;i++) {
                    if(textlength<=lv_arr[i].length()) {
                        if(ed.getText().toString().equalsIgnoreCase((String) lv_arr[i].subSequence(0,  textlength))) {
                            arr_sort.add(lv_arr[i]);
                        }
                    }
                }

                lv1.setAdapter(new ArrayAdapter<String>  (Searchsort.this,android.R.layout.simple_list_item_1 , arr_sort));

            }
        });
    }

    public void onListItemClick(ListView parent, View v, int position, long id) {
        if ("João".equals(lv_arr[position])) { 
            Intent myIntent = new Intent(Searchsort.this, Joao.class);
            startActivity(myIntent);
        }
    }

}
lv1.setOnItemClickListener(new OnItemClickListener() {
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

       Intent intent = new Intent(Searchsort.this, Joao.class);                                                  

                    startActivity(intent);          
                }
            }        
        });

setOnItemClickListener用於ListView並處理在那里打開的活動。

請檢查您的Androidmanifest.xml

添加像這樣的聲明:

<activity android:name=".CLASS_NAME"> </activity>

您必須像這樣聲明所有活動。

作為Niko建議,以以下方式使用setOnItemClickListener()。

public class Searchsort extends Activity {

private ListView lv1;
private EditText ed;
private String lv_arr[]={"John","Mary","Carl","Rose","Charlie","Allan", "João"};
private ArrayList<String> arr_sort= new ArrayList<String>();
int textlength=0;
private String getItem;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    lv1 = (ListView)findViewById(R.id.listView1);
    ed = (EditText)findViewById(R.id.EditText01);

    // By using setAdpater method in listview we an add string array in list.

    lv1.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , lv_arr));
    // Here I have set Listener for listview 
    lv1.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
 // Here I am getting the selected item of listview.
            getItem = (arg0.getItemAtPosition(arg2).toString());

            if(getItem.equals("John"))
            {
                Intent i = new Intent(Searchsort.this,John.class);
                startActivity(i);
            }
        }
    });
    ed.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {
            textlength=ed.getText().length();
            arr_sort.clear();
            for(int i=0;i<lv_arr.length;i++) {
                if(textlength<=lv_arr[i].length()) {
                    if(ed.getText().toString().equalsIgnoreCase((String) lv_arr[i].subSequence(0,  textlength))) {
                        arr_sort.add(lv_arr[i]);
                    }
                }
            }
            lv1.setAdapter(new ArrayAdapter<String>  (Searchsort.this,android.R.layout.simple_list_item_1 , arr_sort));
        }
    });
}    
 }

嘗試這個..

listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {

if(position == 1)
{

         Intent myIntent = new Intent(YourActivity.this, SecondActivity.class);
             startActivityForResult(myIntent, 0);
}

if(position == 2)
{

         Intent myIntent =  new Intent(YourActivity.this, ThirdActivity.class);
             startActivityForResult(myIntent, 0);
}
    }
  });

希望這個能對您有所幫助 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM