2017-11-30 15 views
1

映画に関する情報を表示するアプリを作成しました。今、問題は私がマークを設定したり、ユーザーがリストビュー項目をクリックするたびに太字にすることができないということです。したがって、ユーザーは視聴した映画を知ることができます。
getView()メソッドでboolean変数を追加しましたが、これで問題を解決できませんでした。
これは私のアプリのscreenshotです:リストアイテムを読んだものとしてマークするには?

MovieOne.java

import android.content.Intent; 
import android.graphics.Movie; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ImageView; 
import android.widget.ListView; 
import java.util.ArrayList; 
import java.util.Arrays; 

public class MainActivity extends AppCompatActivity { 
CustomAdapter myadapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    int[] images = {R.drawable.dfg,R.drawable.godf,R.drawable.godf2,R.drawable.thedark,R.drawable.twelv,R.drawable.shindl}; 
    String[] movie_titles = getResources().getStringArray(R.array.Movie_titles); 
    String[] movie_ratings=getResources().getStringArray(R.array.Movie_ratings); 
    String[] movie_janrs=getResources().getStringArray(R.array.Movie_janrs); 
    int[] arrows = {R.drawable.hjk,R.drawable.hjk,R.drawable.hjk,R.drawable.hjk,R.drawable.hjk,R.drawable.hjk}; 
    setContentView(R.layout.activity_main); 
    ListView mylist = (ListView) findViewById(R.id.list); 
    myadapter = new CustomAdapter(this,images,movie_titles,movie_ratings,movie_janrs,arrows); 
    if(mylist!=null){ 
     mylist.setAdapter(myadapter); 
    } 
    mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      if (position==0){ 
       Intent movie1 = new Intent(MainActivity.this,MovieOne.class); 
       startActivity(movie1); 
      } 
     } 
    }); 
} 
} 

CustomAdapter.java

import android.content.Context; 
import android.support.annotation.NonNull; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 
public class CustomAdapter extends BaseAdapter { 
Context context; 
static LayoutInflater vi=null; 
int[] images; 
String[] movie_titles; 
String[] movie_ratings; 
String[] movie_janrs; 
int[] arrows; 


public CustomAdapter(Context context, int images[], String movie_titles[], String movie_ratings[], String movie_janrs[],int arrows[]){ 
    this.context = context; 
    this.images=images; 
    this.movie_titles=movie_titles; 
    this.movie_ratings=movie_ratings; 
    this.movie_janrs=movie_janrs; 
    this.arrows=arrows; 
} 
@Override 
public int getCount() { 
    return movie_titles.length; 
} 

@Override 
public Object getItem(int position) { 
    return getItemId(position); 
} 

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

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

    if(convertView ==null){ 
     vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView=vi.inflate(R.layout.custom_layout,null); 
    } 
    if(convertView!=null){ 
     ImageView tvImage = (ImageView) convertView.findViewById(R.id.one); 
     TextView tvTittle = (TextView) convertView.findViewById(R.id.two); 
     TextView tvRating = (TextView) convertView.findViewById(R.id.three); 
     TextView tvJanr = (TextView) convertView.findViewById(R.id.four); 
     ImageView tvImage2 = (ImageView) convertView.findViewById(R.id.six); 
     if(tvImage!=null && tvTittle!=null && tvRating!=null && tvJanr!=null){ 
      tvImage.setImageResource(images[position]); 
      tvTittle.setText(movie_titles[position]); 
      tvRating.setText(movie_ratings[position]); 
      tvJanr.setText(movie_janrs[position]); 
      tvImage2.setImageResource(arrows[position]); 
     } 
    } 
    return convertView; 
} 
} 

MainActivity.java

答えて

1

リストアイテムをクリックまたは読むには、アイテムクリックの位置を維持する必要があります。あなたのgetView()方法で

OnItemClickListener listViewOnItemClick = new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) { 
       mSelectedItem = position; 
       mAdapter.notifyDataSetChanged(); 
     } 
    }; 

と :コーディング

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final View view = View.inflate(context, R.layout.item_list, null); 

     if (position == mSelectedItem) { 
      // set your color 
     } 

     return view; 
    } 

ハッピー!!

1

長さがmovie_titlesのブール型の「クリックされた」配列を作成します。すべての項目をfalseに初期化し、アダプタに渡します。あなたのgetViewで項目をクリックするとその位置を取得し、クリックした項目をtrueに設定します

関連する問題