2013-01-24 91 views
1

我遇到了一個很好的可過濾列表視圖教程,我想知道如何確定選擇哪個列表視圖項目並顯示一個敬酒。下面是代碼:獲取項目在篩選列表視圖選擇

package com.example.listview; 

import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.ViewStub; 
import android.widget.BaseAdapter; 
import android.widget.EditText; 
import android.widget.FrameLayout; 
import android.widget.ListView; 
import android.widget.TextView; 


public class TestFilterListView extends Activity { 
FrameLayout historyContainer; 
ViewStub viewStub; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.history_container); 
    historyContainer = (FrameLayout) findViewById(R.id.historyContainerLayout); 
    EditText filterEditText = (EditText) findViewById(R.id.filter_text); 
    filterEditText.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      historyContainer.removeAllViews(); 
      final List<String> tempHistoryList = new ArrayList<String>(); 
      tempHistoryList.addAll(historyList); 
      for(String data : historyList) { 
       if(data.indexOf((s.toString())) == -1) { 
        tempHistoryList.remove(data); 
       } 
      } 
      viewStub = new ViewStub(TestFilterListView.this, R.layout.history_schedule); 
      viewStub.setOnInflateListener(new ViewStub.OnInflateListener() 
      { 
       public void onInflate(ViewStub stub, View inflated) 
       { 

        setUIElements(inflated, tempHistoryList); 
       } 
      }); 
      historyContainer.addView(viewStub); 
      viewStub.inflate(); 


     } 


     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 

     } 
    }); 

    setViewStub(); 
} 


/********************************************************************************************************/ 
private void setViewStub() 
{ 
    historyList.add("first"); 
    historyList.add("second"); 
    historyList.add("third"); 
    historyList.add("fourth"); 
    historyList.add("fifth"); 
    historyList.add("sixth"); 
    historyList.add("seventh"); 


    viewStub = new ViewStub(TestFilterListView.this, R.layout.history_schedule); 
    viewStub.setOnInflateListener(new ViewStub.OnInflateListener() 
    { 
     public void onInflate(ViewStub stub, View inflated) 
     { 

      setUIElements(inflated, historyList); 


















     } 
    }); 
    historyContainer.addView(viewStub); 
    viewStub.inflate(); 



} 



/********************************************************************************************************/ 
final List<String> historyList = new ArrayList<String>(); 
String displayName = ""; 
ListView historyListView; 
private void setUIElements(View v, List<String> historyLists) 
{ 


    if (v != null) 
    { 
     historyScheduleData.clear(); 
     //historyList.clear(); 

     historyScheduleData.addAll(historyLists); 
     historyListView = (ListView) findViewById(R.id.historylist); 
     historyListView.setAdapter(new BeatListAdapter(this)); 

     registerForContextMenu(historyListView); 


    } 


} 

private static class BeatListAdapter extends BaseAdapter { 
    private LayoutInflater mInflater; 

    public BeatListAdapter(Context context) { 
     mInflater = LayoutInflater.from(context); 

    } 

    public int getCount() { 
     return historyScheduleData.size(); 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 
      convertView = mInflater.inflate(R.layout.history_list_view, null); 
      holder = new ViewHolder(); 
      holder.historyData = (TextView) convertView 
        .findViewById(R.id.historytext); 

      convertView.setTag(holder); 
     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.historyData.setText(historyScheduleData.get(position)); 

     return convertView; 
    } 

    static class ViewHolder { 

     TextView historyData; 
    } 
} 

private static final List<String> historyScheduleData = new ArrayList<String>(); 

}

我想過使用

protected void onListItemClick(ListView l, View v, int position, long id) { 

     if(position == 0) { 
      Intent intent = new Intent(getApplicationContext(), GODoc1Activity.class); 
      startActivity(intent); 

但是當我嘗試實現它,這是行不通的。我在這裏錯過了什麼嗎?我如何去做這件事?

+0

「不起作用」是什麼意思? –

+0

對不起,我的意思是新的意圖不起作用。但它現在正在工作。 – chris

回答

0

你嘗試過這個?:(在OnCreate)

historyListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { 
      //your code 

      } 
     }); 
+0

哈哈。哇。那個人完全逃脫了我。是的,這個工程很漂亮。完全忘記了這一點。 :) 非常感謝! – chris

+0

不客氣=) – SolArabehety

相關問題