リスト ビューがあり、すべての項目に 3 つのボタンが含まれています。1 つはデータベースに保存するためのもので、残りの 2 つは新しいフラグメントを開く必要があります。アダプターの getView() メソッドのどのボタンに対して OnClickListener を実装しました。ユーザーが保存ボタンをクリックすると、データベースに項目を書き込みたい。データベースへの書き込みは長時間の操作と見なされ、UI スレッドで行うべきではないので、どうすればよいですか? 独自のスレッドを作成する必要がありますか?それともサービスまたは非同期タスクを使用できますか? getView のコードは次のとおりです。
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView==null){
convertView=layoutInflater.inflate(R.layout.top_tracks_artists_item_layout,parent,false);
viewHolder=new ViewHolder();
viewHolder.trackName= (TextView) convertView.findViewById(R.id.top_tracks_item_name);
viewHolder.trackInfo= (Button) convertView.findViewById(R.id.top_tracks_item_info);
viewHolder.trackInfo.setTag(position);
viewHolder.trackInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("try", "Info clicked " +position);
}
});
viewHolder.trackFavourite= (Button) convertView.findViewById(R.id.top_tracks_item_favourite);
viewHolder.trackFavourite.setTag(position);
viewHolder.trackFavourite.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("try", "favourites clicked " +position);
}
});
viewHolder.trackWatch= (Button) convertView.findViewById(R.id.top_tracks_item_watch);
viewHolder.trackWatch.setTag(position);
viewHolder.trackWatch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("try", "Watch clicked " +position);
//here I want to save to database
}
});
convertView.setTag(viewHolder);
}else{
viewHolder= (ViewHolder) convertView.getTag();
}
viewHolder.trackName.setText((String)tracks.get(position).toString());
return convertView;
}
前もって感謝します。