package com.cwport.sentencer;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.cwport.sentencer.data.DataException;
import com.cwport.sentencer.data.DataHelper;
import com.cwport.sentencer.data.DataManager;
import com.cwport.sentencer.data.DataProvider;
import com.cwport.sentencer.data.SourceType;
import com.cwport.sentencer.model.Lesson;
import java.util.ArrayList;
public class AssetLessonFragment extends Fragment {
static final String TAG = AssetLessonFragment.class.getSimpleName();
DataManager dataManager;
ListView listView;
LessonAdapter listAdapter;
DataProvider dataProvider;
ArrayList<Lesson> lessonList;
Context context;
LayoutInflater layoutInflater;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_asset_lesson, container, false);
layoutInflater = inflater;
context = this.getActivity().getApplicationContext();
dataManager = ((SentencerApp)context).getDataManager();
listView = (ListView) v.findViewById(R.id.list);
buildLessonList();
// listening to single list item on click
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
startLesson(position);
}
});
return v;
}
private void startLesson(int lessonIndex) {
// sending data to new activity
Intent i = new Intent(context, CardActivity.class);
i.putExtra(DataHelper.EXTRA_LESSON_INDEX, lessonList.get(lessonIndex).getId());
i.putExtra(DataHelper.EXTRA_LESSON_TITLE, lessonList.get(lessonIndex).getTitle());
i.putExtra(DataHelper.EXTRA_LESSON_SOURCE, lessonList.get(lessonIndex).getSourceType().ordinal());
startActivity(i);
}
private void buildLessonList() {
lessonList = new ArrayList<Lesson>();
try {
dataProvider = dataManager.getDataProvider(SourceType.ASSET, context);
if(lessonList.isEmpty()) {
lessonList = dataProvider.getLessons();
}
} catch(DataException de) {
Log.e(TAG, de.getMessage());
Toast.makeText(context, de.getMessage(), Toast.LENGTH_LONG).show();
}
listAdapter = new LessonAdapter(lessonList);
listAdapter.notifyDataSetChanged();
listView.setAdapter(listAdapter);
}
/**
* LessonAdapter is intended to provide a list of incorporated lessons from assets
*/
private class LessonAdapter extends ArrayAdapter<Lesson> {
private ArrayList<Lesson> lessons;
public LessonAdapter(ArrayList<Lesson> list) {
super(AssetLessonFragment.this.getActivity(), R.layout.list_item_user_lesson, list);
lessons = list;
}
public View getView(int position, View convertView, ViewGroup parent) {
View row;
final Lesson lesson = lessons.get(position);
if (convertView == null) {
row = AssetLessonFragment.this.layoutInflater.inflate(R.layout.list_item_user_lesson, null);
} else {
row = convertView;
}
ImageView icon = (ImageView) row.findViewById(R.id.icon);
icon.setImageResource(R.drawable.ic_action_attachment);
TextView title = (TextView)row.findViewById(R.id.lesson_title);
title.setText(lesson.getTitle());
TextView meta = (TextView)row.findViewById(R.id.lesson_meta);
meta.setText(lesson.getDescription() + " ("
+ AssetLessonFragment.this.getString(R.string.label_cards) +
": " + lesson.getCardCount() + ")");
return row;
}
}
}