2012-04-22 27 views
0

ユーザーがリストビュー内のアイテムをクリックすると、そのイベントのために動的に作成された別のクラスに移動するようにしようとしています。追加するには、連絡先リストAppを作成します。ユーザーがAppをクリックすると、システムを通過したテキストと通話履歴が表示されます。私はこれを行う方法がわかりません、ガベージコレクタメソッドの作業はうまくいくと思いますが、間違ったコンテキストだと思います。Android Listview OnClickListner別のクラスに移動

感謝:)

コード:

public class ChatService extends ListActivity { 
    String GotPass; 
    String GotUname; 
    public static final String PREFS_NAME = "MyPregs"; 
    private GetTask getTask; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getTask = new GetTask(); 
    getTask.execute(); 
    } 

    public class GetTask extends AsyncTask<Void, Void, ReturnModel> { 
    @Override 
    protected ReturnModel doInBackground(Void... params) { 
     return load(); 
    } 

    @Override 
    protected void onPostExecute(ReturnModel result) { 

     if(result.passworderror == true) 
     { 
     Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show(); 
     } 
     else 
     { 
     Toast.makeText(getApplicationContext(), "yaya", Toast.LENGTH_SHORT).show(); 

     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, result.getheadlines()); 
     setListAdapter(adapter); 
     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       Toast.makeText(getApplicationContext(), "Yaya, we clicked on something", Toast.LENGTH_LONG).show(); 
       // TODO Auto-generated method stub 

      } 
      }); 
     } 
    } 
    } 

    private ReturnModel load() { 
    ReturnModel returnModel = new ReturnModel(); 

    BufferedReader in = null; 
    String data = null; 
    Bundle gotData = getIntent().getExtras(); 
    if (gotData != null) { 
     GotPass = gotData.getString("key!"); 
     GotUname = gotData.getString("key!!"); 
    } 

    SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
    String username = settings.getString("key1", null); 
    String password = settings.getString("key2", null); 
    // username = "irock97"; // unremark to test like you got username from prefs.. 
    if (username != null && username.equals("irock97")) { 
     returnModel.setPassworderror(false); 
    } 
    else 
    { 
     returnModel.setPassworderror(true); 
     return returnModel; 
    } 

    HttpClient httpclient = new DefaultHttpClient(); 

    /* login.php returns true if username and password is equal to saranga */ 
    HttpPost httppost = new HttpPost("http://gta5news.com/login.php"); 

    try { 
     // Add user name and password 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("username", username)); 
     nameValuePairs.add(new BasicNameValuePair("password", password)); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     Log.w("HttpPost", "Execute HTTP Post Request"); 
     HttpResponse response = httpclient.execute(httppost); 
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     StringBuffer sb = new StringBuffer(""); 
     String l = ""; 
     String nl = ""; 
     while ((l = in.readLine()) != null) { 
     sb.append(l + nl); 
     } 
     in.close(); 
     data = sb.toString(); 


     List<String> headlines = new ArrayList<String>(); 
     headlines.add(data); 
     returnModel.setheadlines(headlines); 

    } 
    catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return returnModel; 
    } 


    public class ReturnModel { 
    private List<String> headlines; 
    private boolean passworderror; 

    public List<String> getheadlines() { 
     return headlines; 
    } 

    public void setheadlines(List<String> headlines) { 
     this.headlines = headlines; 
    } 

    public boolean getPassworderror() { 
     return passworderror; 
    } 

    public void setPassworderror(boolean passworderror) { 
     this.passworderror = passworderror; 
    } 
    } 

} 
+0

ur Queを説明できます。ウルプロブラムは何ですか? – MAC

答えて

0

XML初期ビュー(あなた動的に作成したレイアウトのそれぞれに等しい事前設定)(単純化され、閲覧するための手段形式のXMLを膨らませる)膨らませます。

LayoutInflater inflater = (LayoutInflater) MyApplication.getAppContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View newView = inflater.inflate(R.layout.your_layout, parent, false); 

ここで、あなたの希望に合わせてnewViewを変更し、新しいビュー要素を追加することができます。

これを行うには、物事を追加したい初期レイアウトを参照する必要があります。例については

LinearLayout myInitialLL = (LinearLayout) newView.findViewById(R.id.my_initial_ll); 

あなたがたとえば新しいのTextViewを作成し、myIniitalLLに追加することができます。

​​

アクティビティにカスタムプライベートメソッドを作成して、論理部分を作成できるようになりました。これはonItemClickListenerで呼び出す必要があります。 必要なテキストビューの量を今では取り除けば、ループを介して動的なTextViewを作成することもできます。私はそのためのパラメータとしてArrayListをprefferします。

+0

それは私には意味がありません、私は恐れています。 – TheBlueCat

+0

あなたの問題は何ですか?特定の問題について、コード全体を尋ねるのではなく、質問する必要があります:) –

関連する問題