2017-01-21 13 views
0

質問はビットNEWSBIEタイプですが、私は:(Androidのリストビューは - クリックでWebサイトにアクセスしてください

は、だから私は、私はデータをのTextViewを移入MainActivity.JavaフェッチしているのAndroidに知られているわけではない場合は申し訳ありません。サーバからJSONを使用して、それがID、ユーザ名、メッセージ、DATE_TIME、ステータス、タイプなどのパラメータを与え、次のように は私がしたいことリスト項目のそれぞれをクリックして上にある、それはウェブサイトを行く:。

http://my_web_site_url/json?id=id_of_the_list_item&status=something

つまり、ユーザーが単一のList Itemをクリックすると、JSONによって取得された同じIDを使用してURLがリダイレクトされ、Eリストアイテム。

各list_item_idを設定して取得する方法と、ウェブサイトに行く方法は?

ヘルプはありがたいです!

私のコードは次のとおりです。

package something; 

import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.Toast; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.HashMap; 

public class MainActivity extends AppCompatActivity { 

private String TAG = MainActivity.class.getSimpleName(); 

private ProgressDialog pDialog; 
private ListView lv; 

// URL to get contacts JSON 
private static String url = "my_website_that_returns_json_data"; 

ArrayList<HashMap<String, String>> contactList; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    contactList = new ArrayList<>(); 

    lv = (ListView) findViewById(R.id.list); 
    new GetContacts().execute(); 
} 

/** 
* Async task class to get json by making HTTP call 
*/ 
private class GetContacts extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     // Showing progress dialog 
     pDialog = new ProgressDialog(MainActivity.this); 
     pDialog.setMessage("Please wait..."); 
     pDialog.setCancelable(false); 
     pDialog.show(); 

    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     HttpHandler sh = new HttpHandler(); 

     // Making a request to url and getting response 
     String jsonStr = sh.makeServiceCall(url); 

     Log.e(TAG, "Response from url: " + jsonStr); 

     if (jsonStr != null) { 
      try { 
       JSONObject jsonObj = new JSONObject(jsonStr); 

       // Getting JSON Array node 
       JSONArray result = jsonObj.getJSONArray("result"); 

       // looping through All Contacts 
       for (int i = 0; i < result.length(); i++) { 
        JSONObject c = result.getJSONObject(i); 

        String id = c.getString("id"); 
        String username = c.getString("username"); 
        String message = c.getString("message"); 
        String date_status = "Date: " + c.getString("date_time") + " Status: " + c.getString("status"); 


        // tmp hash map for single contact 
        HashMap<String, String> result1 = new HashMap<>(); 

        // adding each child node to HashMap key => value 
        result1.put("id", id); 
        result1.put("username", username); 
        result1.put("message", message); 
        result1.put("date_status", date_status); 

        // adding contact to contact list 
        contactList.add(result1); 
       } 
      } catch (final JSONException e) { 
       Log.e(TAG, "Json parsing error: " + e.getMessage()); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Toast.makeText(getApplicationContext(), 
           "Json parsing error: " + e.getMessage(), 
           Toast.LENGTH_LONG) 
           .show(); 
        } 
       }); 

      } 
     } else { 
      Log.e(TAG, "Couldn't get json from server."); 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        Toast.makeText(getApplicationContext(), 
          "Couldn't get json from server. Check LogCat for possible errors!", 
          Toast.LENGTH_LONG) 
          .show(); 
       } 
      }); 

     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     // Dismiss the progress dialog 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
     /** 
     * Updating parsed JSON data into ListView 
     * */ 

     ListAdapter adapter = new SimpleAdapter(
       MainActivity.this, contactList, 
       R.layout.list_item, new String[]{"username", "message", 
       "date_status"}, new int[]{R.id.username, 
       R.id.message,R.id.date_status}); 

     lv.setAdapter(adapter); 

    } 

} 
} 
+0

lv.itemOnClickListnerを使用 –

+0

完全な構文を教えてください。私は初心者ですので、どこでどのように行うのか分かりません! – Webmaster

答えて

1

使用onItemClickListenerあなたのListViewで、あなたのデータの位置を取得し、あなたのリンクをロードするあなたの方法で内部クラス

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


     String item = lv.getItemAtPosition(position); 
     Toast.makeText(this,"You selected : " + item,Toast.LENGTH_SHORT).show(); 


     } 
    }); 

を使用して

例。

+0

こんにちは@Webmasterがあなたを助けてくれたら答えを受け入れることができますか? –

+0

私はエラーが発生しました - 'シンボルを再現できません"位置 " – Webmaster

+0

あなたの質問を更新して、あなたのonitemclickメソッドを見ることができます –

関連する問題