您的位置:首页 > 移动开发 > Android开发

BNR Android Demo学习笔记(一)——CrimeIntent

2015-10-27 08:44 585 查看
开发环境:win7,Android Studio 1.2,

1、Model

Crime,数据模型,每个Crime有一个UUID作为唯一标识。

package tina.criminalintent;

import android.content.Intent;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.TextView;

import java.util.ArrayList;

//
///**
// * A fragment representing a list of Items.
// * <p/>
// * Large screen devices (such as tablets) are supported by replacing the ListView
// * with a GridView.
// * <p/>
// * Activities containing this fragment MUST implement the {@link OnFragmentInteractionListener}
// * interface.
// */
public class CrimeListFragment2 extends Fragment implements AbsListView.OnItemClickListener {

private ArrayList<Crime> mCrimes;

//    private OnFragmentInteractionListener mListener;

/**
* The fragment's ListView/GridView.
*/
private AbsListView mListView;

/**
* The Adapter which will be used to populate the ListView/GridView with
* Views.
*/
private CrimeAdapter mAdapter;

/**
* Mandatory empty constructor for the fragment manager to instantiate the
* fragment (e.g. upon screen orientation changes).
*/
public CrimeListFragment2() {
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().setTitle(R.string.crimes_title);

mCrimes=CrimeLab.getInstance(getActivity()).getCrimes();
mAdapter=new CrimeAdapter(mCrimes);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_crimelist, container, false);

// Set the adapter
mListView = (AbsListView) view.findViewById(android.R.id.list);
((AdapterView) mListView).setAdapter(mAdapter);

// Set OnItemClickListener so we can be notified on item clicks
mListView.setOnItemClickListener(this);

return view;
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Crime crime=((CrimeAdapter)(parent.getAdapter())).getItem(position);

//        Intent intent=new Intent(getActivity(),CrimeActivity.class);
Intent intent=new Intent(getActivity(),CrimePagerActivity.class);
intent.putExtra(CrimeFragment.EXTRA_CRIME_ID, crime.getId());
startActivity(intent);
}

private class CrimeAdapter extends ArrayAdapter<Crime>{
public CrimeAdapter(ArrayList<Crime> crimes) {
super(getActivity(), 0, crimes);
}

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

if(convertView==null){
convertView=getActivity().getLayoutInflater()
.inflate(R.layout.list_item_crime,null);
}

Crime c=getItem(position);
TextView titleTextView=(TextView)convertView.findViewById(R.id.crime_list_item_title);
titleTextView.setText(c.getTitle());

TextView dateTextView=(TextView)convertView.findViewById(R.id.crime_list_item_date);
dateTextView.setText(c.getDate().toString());

CheckBox solvedCheckBox=(CheckBox)convertView.findViewById(R.id.crime_list_item_solvedCheckBox);
solvedCheckBox.setChecked(c.isSolved());

return convertView;
}
}

@Override
public void onResume() {
super.onResume();
((CrimeAdapter)mListView.getAdapter()).notifyDataSetChanged();
}
}


View Code
刚刚接触Fragment,除了模板不兼容Android3.0以下版本以外,我觉得里面的结构也有点复杂,不过Fragment的使用方法很多,具体不知道这种模板是不是用得比较普遍。以后再看吧。

4、运行效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: