2016-12-31 64 views
0

我有a JSON file與類別,我已經在列表視圖中顯示它 和我有另一個JSON文件,其中包含被點擊的特定項目的「子類別」。我想在「子類別」中顯示已被點擊的項目。android獲得列表中的點擊項ID

這裏是我的代碼

public class MainActivity extends AppCompatActivity { 
    private GridView listview_category; 

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

     listview_category = (GridView) findViewById(R.id.listview_category); 
    } 

      public class JsonTask extends AsyncTask<String,String,List<MainCategory>>{ 

       @Override 
       protected List<MainCategory> doInBackground(String... params) { 
        HttpURLConnection connection = null; 
        BufferedReader reader = null; 
        URL url = null; 
        try { 
         url = new URL(params[0]); 
        } catch (MalformedURLException e) { 
         e.printStackTrace(); 
        } 

        try { 
         connection = (HttpURLConnection) url.openConnection(); 
         connection.connect(); 
         InputStream stream = connection.getInputStream(); 
         reader = new BufferedReader(new InputStreamReader(stream)); 
         StringBuffer buffer = new StringBuffer(); 
         String line = ""; 
         while ((line = reader.readLine()) != null) { 
          buffer.append(line); 
         } 

         String finalJson = buffer.toString(); 
         JSONObject parentObject = new JSONObject(finalJson); 
         JSONArray parentArray = parentObject.getJSONArray("results"); 

         List<MainCategory> mainCategorieList = new ArrayList<>(); 
          for (int i = 0; i < parentArray.length(); i++) { 
           JSONObject finalObject = parentArray.getJSONObject(i); 
           MainCategory mainCategory = new MainCategory(); 
           mainCategory.setName(finalObject.getString("name")); 
           mainCategory.setOrdering(finalObject.getInt("ordering")); 
           mainCategory.setId(finalObject.getInt("id")); 
           mainCategory.setImages(finalObject.getString("images")); 




           mainCategorieList.add(mainCategory); 


          } 
         return mainCategorieList; 


        } catch (IOException e) { 
         e.printStackTrace(); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } finally { 
         if (connection != null) { 
          connection.disconnect(); 
         } 
         try { 
          if(reader!= null) { 
           reader.close(); 
          } 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
        return null; 
       } 
       @Override 
       protected void onPostExecute(List<MainCategory> result) { 
        super.onPostExecute(result); 

        categoryAdapter adapter = new categoryAdapter(getApplicationContext() , R.layout.category_row , result); 
        listview_category.setAdapter(adapter); 

       } 
      } 

     public class categoryAdapter extends ArrayAdapter{ 


     private List<MainCategory> categoryList; 
     private int resource; 
     private LayoutInflater inflater; 

     public categoryAdapter(Context context, int resource, List<MainCategory> objects) { 
      super(context, resource, objects); 
      categoryList = objects; 
      this.resource = resource; 
      inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
     } 

     @NonNull 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      if (convertView == null){ 
       convertView = inflater.inflate(resource , null); 
      } 
      ImageView imageView; 
      TextView textView; 

      imageView = (ImageView)convertView.findViewById(R.id.imageView_category); 
      textView = (TextView) convertView.findViewById(R.id.textView_categoryname); 

      Glide.with(getContext()).load(categoryList.get(position).getImages()).into(imageView); 
      textView.setText(categoryList.get(position).getName()); 



      return convertView; 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main_menu , menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     if(id == R.id.action_refresh){ 
      new JsonTask().execute("https://api.myjson.com/bins/bzs57"); 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

這裏是例如 「子類別」

category 1 pressed

+0

@KNeerajLal我需要得到具體單擊項目,並開始與包含特定項目的太陽類別JSON文件中的新的活動,我將修改我如何便利貼將 –

+0

@KNeerajLal我添加一張圖片,我應該怎麼做 –

+0

你將如何獲得子類別列表?基於類別ID? –

回答

0

詞根記憶的mainCatagoryList全球的

List<MainCategory> mainCategorieList = new ArrayList<>(); 

2.增加OnItemClicklistener到你的GridView

listview_category.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 
       MainCategory mainCatagory = mainCategorieList.get(position); 
       Intent intent = new Intent(this,YourActivity.class); 
       intent.putExtra("categoryId",mainCatagory.getId()); 
       intent.putExtra("categoryName",mainCatagory.getName()); 
       startActivity(intent); 
      } 
     }); 

3檢索YourActivity中的categoryId(你啓動的新的活動)。並獲得子類

int mainCategoryId = getIntent().getIntExtra(getIntent().getIntExtra("categoryId",0); 
String mainCategoryName = getIntent().getStringExtra(getIntent().getIntExtra("categoryName","");