RestApiでMS SQL Serverのデータを取得しましたが、Recyclerview
に設定できません。私はDataBaseの名前と画像のURLの2つのStringオブジェクトを読んでいます。RecyclerviewとRestApi
Recyclerviewadapter
上のデータを設定することはできません
私を助けたり、私に見せて下さい正しい例
MainActivity.java
public class MainActivity extends AppCompatActivity {
private List<SingleItemModel> feedsList;
private RecyclerView mRecyclerView;
private MyRecyclerViewAdapter adapter;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
progressBar = (ProgressBar) findViewById(R.id.progress_bar);
new AsyncLoadDeptDetails().execute();
}
protected class AsyncLoadDeptDetails extends
AsyncTask<Void, JSONObject, ArrayList<SingleItemModel>> {
ArrayList<SingleItemModel> recModel = null;
@SuppressWarnings("WrongThread")
@Override
protected ArrayList<SingleItemModel> doInBackground(Void... params) {
// TODO Auto-generated method stub
RestAPI api = new RestAPI();
try {
JSONObject jsonObj = api.SingleItemModel();
JSONParser parser = new JSONParser();
recModel = parser.parseDepartment(jsonObj);
adapter = new MyRecyclerViewAdapter(MainActivity.this, feedsList);
mRecyclerView.setAdapter(adapter);
feedsList = new ArrayList<>();
for (int i = 0; i < jsonObj.length(); i++) {
JSONObject post = jsonObj.optJSONObject(String.valueOf(i));
SingleItemModel item = new SingleItemModel(i);
item.setName(post.optString("title"));
item.setUrl(post.optString("thumbnail"));
feedsList.add(item);
}
} catch (Exception e) {
// TODO Auto-generated catch block
Log.d("AsyncLoadDeptDetails", e.getMessage());
}
return recModel;
}
}
}
SingleItemModel
public class SingleItemModel {
private String name;
private String url;
public SingleItemModel(String name, String url) {
this.name = name;
this.url = url;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
MyRecyclerViewAdapter
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.CustomViewHolder> {
private List<SingleItemModel> singleItemList;
private Context mContext;
private OnItemClickListener onItemClickListener;
public MyRecyclerViewAdapter(Context context, List<SingleItemModel> singleItemList) {
this.singleItemList = singleItemList;
this.mContext = context;
}
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null);
CustomViewHolder viewHolder = new CustomViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(CustomViewHolder customViewHolder, int i) {
final SingleItemModel feedItem = singleItemList.get(i);
//Download image using picasso library
if (!TextUtils.isEmpty(feedItem.getUrl())) {
Picasso.with(mContext).load(feedItem.getUrl())
.error(R.drawable.placeholder)
.placeholder(R.drawable.placeholder)
.into(customViewHolder.imageView);
}
//Setting text view title
customViewHolder.textView.setText(feedItem.getName());
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickListener.onItemClick(feedItem);
}
};
customViewHolder.imageView.setOnClickListener(listener);
customViewHolder.textView.setOnClickListener(listener);
}
@Override
public int getItemCount() {
return (null != singleItemList ? singleItemList.size() : 0);
}
class CustomViewHolder extends RecyclerView.ViewHolder {
protected ImageView imageView;
protected TextView textView;
public CustomViewHolder(View view) {
super(view);
this.imageView = (ImageView) view.findViewById(R.id.thumbnail);
this.textView = (TextView) view.findViewById(R.id.title);
}
}
public OnItemClickListener getOnItemClickListener() {
return onItemClickListener;
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
}
私はSingleItemModelアイテムでエラーが発生しました。item = new SingleItemModel(i); – SamR
それからiを削除します。あなたはモデルクラスのコンストラクタをチェックする必要があります – Raghunandan
もう一度私の質問を確認してください – SamR