2016-08-23 13 views
0

Я разрабатываю приложение, и теперь я не знаю, что делать дальше: У меня есть список элементов, каждый элемент содержит информацию + идентификатор + логотип. То, что я хочу сделать, это создать список, как на картинкеСоздание очень настраиваемого списка

List

Конечно, я хочу это в один слой, с логотипом, некоторую информацию, а также кнопка для определения действия; где я мог бы использовать идентификатор выбранного элемента.

Я провел некоторое исследование, возможно, я нашел некоторые относительные темы, но ни один из того, что я хочу.

Мой список является

ArrayList<ArrayList<String>> 

заполнены данными из базы данных. Спасибо

+0

вам нужно использовать пользовательское listview или просмотр ресайклера –

+0

Спасибо! Я нахожусь в Android Studio, как я могу определить пользовательское listview, а также определить отличительный компонент элемента? –

+0

, где вы сохранили логотип, означает изображения –

ответ

0

Вот оно:

public class Avancee extends Activity { 
    // Log tag 
    private static final String TAG = MainActivity2.class.getSimpleName(); 

    // Movies json url 
    private static final String url = "http://blabla.com/movie.json"; 
    private ProgressDialog pDialog; 
    private List<Movie> movieList = new ArrayList<Movie>(); 
    private ListView listView; 
    private CustomListAdapter adapter; 

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

     listView = (ListView) findViewById(R.id.list); 
     adapter = new CustomListAdapter(this, movieList); 
     listView.setAdapter(adapter); 

     pDialog = new ProgressDialog(this); 
     // Showing progress dialog before making http request 
     pDialog.setMessage("Loading..."); 
     pDialog.show(); 
     // changing action bar color 
     getActionBar().setBackgroundDrawable(
       new ColorDrawable(Color.parseColor("#1b1b1b"))); 

     // Creating volley request obj 

     JsonArrayRequest movieReq = new JsonArrayRequest(url, 
       new Response.Listener<JSONArray>() { 

        @Override 
        public void onResponse(JSONArray response) { 
         //Log.d(TAG, response.toString()); 
         hidePDialog(); 

         String result = getIntent().getStringExtra("ITEM_EXTRAA"); 
         System.out.println(result); 
         try{ 
          JSONArray ja = new JSONArray(result); 
          for (int i = 0; i < ja.length(); i++) { 
           try { 

            JSONObject obj = ja.getJSONObject(i); 
            Movie movie = new Movie(); 
            movie.setTitle(obj.getString("title")); 
            movie.setLocation(obj.getString("location_search_text")); 
            movie.setId(obj.getInt("id")); 


            // adding movie to movies array 
            movieList.add(movie); 

           } catch (JSONException e) { 
            e.printStackTrace(); 
           } 

          } 
         }catch(JSONException e){ 
          Log.e("log_tag", "Error parsing data "+e.toString()); 
         } 

         // notifying list adapter about data changes 
         // so that it renders the list view with updated data 
         adapter.notifyDataSetChanged(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       hidePDialog(); 

      } 
     }); 

     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(movieReq); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     hidePDialog(); 
    } 

    private void hidePDialog() { 
     if (pDialog != null) { 
      pDialog.dismiss(); 
      pDialog = null; 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

} 

Это «идентификатор», что я хочу, чтобы в случае OnClick.

+0

Найденный! если кто-то должен сделать то же самое, измените в файле CustomListAdapter.java в этом листе: 'TextView id = (TextView) convertView.findViewById (R.id.releaseYear); \t \t \t \t Окончательный фильм т = movieItems.get (положение); \t \t RelativeLayout entreprise = (RelativeLayout) convertView.findViewById (R.id.entreprise); \t \t entreprise.setOnClickListener (новый вид.OnClickListener() { \t \t \t @Override \t \t \t общественный недействительный OnClick (View Вид) { \t \t \t \t // ИСПОЛЬЗОВАНИЕ m.getWhatUWant \t \t \t} \t \t}); ' –

0

использовать этот код

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { 

Movie movie= movieList.get(position); 

      } 
     }); 

// здесь позиция даст вам идентификатор ячейки так списке следует вы можете использовать его как Movie фильм = movieList.get (положение); , то вы можете использовать его, чтобы получить все данные внутри вашего объекта moview

+0

@JohnDoe делает ваш Проблема решена –

Смежные вопросы