public class MainActivity extends AppCompatActivity {
public SharedPreferences settings; private ListView listView; // 리스트뷰 private EditText editText; private Button btn_search;
private ArrayList<PesonData> arrayList = null; // 데이터 리스트 private ListViewAdapter listViewAdapter = null; // 리스트뷰에 사용되는 ListViewAdapter ProgressDialog mProgressDialog;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.et_text01);
// Adapter에 추가 데이터를 저장하기 위한 ArrayList arrayList = new ArrayList<PesonData>(); // ArrayList 생성
listView = (ListView) findViewById(R.id.my_listView); listViewAdapter = new ListViewAdapter(this); // Adapter 생성 listView.setAdapter(listViewAdapter); // 어댑터를 리스트뷰에 세팅
btn_search = (Button) findViewById(R.id.btn_search); btn_search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { settings = getSharedPreferences("settings", Activity.MODE_PRIVATE); //System.out.println("search ==="+ editText.getText().toString().trim()); Uri.Builder builder = new Uri.Builder() .appendQueryParameter("search", editText.getText().toString().trim()) .appendQueryParameter("idx", "2"); // settings.getString("idx","") final String postParams = builder.build().getEncodedQuery();
new getJSONData().execute(Value.IPADDRESS + "/get_json.php",postParams); hideSoftKeyboard(); } }); }
private void hideSoftKeyboard(){ // 소프트 키보드 숨기기 InputMethodManager imm = (InputMethodManager) getSystemService( Context.INPUT_METHOD_SERVICE ); imm.hideSoftInputFromWindow( editText.getApplicationWindowToken(), 0 ); }
class getJSONData extends AsyncTask<String, Void, String> {
@Override protected void onPreExecute() { super.onPreExecute(); // Create a progressdialog mProgressDialog = new ProgressDialog(MainActivity.this); mProgressDialog.setTitle("Personal Profile JSON Parse"); mProgressDialog.setMessage("Loading..."); mProgressDialog.setIndeterminate(false); mProgressDialog.show(); // Show progressdialog }
@Override protected String doInBackground(String... params) { try { return PHPComm.getJson(params[0],params[1]); } catch (Exception e) { return new String("Exception: " + e.getMessage()); } }
protected void onPostExecute(String result){ searchJSON=result; showList(); mProgressDialog.dismiss(); } }
// 서버 정보를 파싱하기 위한 변수 선언 String searchJSON; private static final String TAG_RESULTS="result"; private static final String TAG_UID = "uid"; // 서버 테이블의 실제 필드명 private static final String TAG_NAME = "name"; private static final String TAG_MobileNO ="mobileNO"; private static final String TAG_OfficeNO ="officeNO"; private static final String TAG_Image = "photo"; // 이미지 필드
JSONArray peoples = null;
protected void showList() { try { JSONObject jsonObj = new JSONObject(searchJSON); peoples = jsonObj.getJSONArray(TAG_RESULTS);
arrayList.clear(); // 서버에서 가져온 데이터 초기화 for(int i=0;i<peoples.length();i++){ JSONObject c = peoples.getJSONObject(i); final String uid = c.getString(TAG_UID); final String name = c.getString(TAG_NAME); final String mobileNO = c.getString(TAG_MobileNO); final String officeNO = c.getString(TAG_OfficeNO); final String Profile_Image = c.getString(TAG_Image);
// 서버에서 가져온 데이터 저장 listViewAdapter.addItem(photoURL,uid,name,mobileNO,officeNO); }
runOnUiThread(new Runnable() {
// 화면에 반영하기 위하여 runOnUiThread()를 호출하여 실시간 갱신한다. @Override public void run() { // 갱신된 데이터 내역을 어댑터에 알려줌 listViewAdapter.notifyDataSetChanged(); } });
} catch (JSONException e) { e.printStackTrace(); } }
class ViewHolder { public LinearLayout child_layout; public ImageView profile_Image; public TextView tv_name; public TextView tv_mobileNO; public TextView tv_officeNO; public Button chid_btn; }
private class ListViewAdapter extends BaseAdapter { ImageLoader imageLoader; Context context;
public ListViewAdapter(Context context) { this.context = context; imageLoader = new ImageLoader(context); }
@Override public int getCount() { return arrayList.size(); // 데이터 개수 리턴 }
@Override public Object getItem(int position) { return arrayList.get(position); }
// 지정한 위치(position)에 있는 데이터 리턴 @Override public long getItemId(int position) { return position; }
// position에 위치한 데이터를 화면에 출력하는데 사용될 View를 리턴 @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder; final Context context = parent.getContext();
// 화면에 표시될 View if(convertView == null){ viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.person_item,parent,false);
convertView.setBackgroundColor(0x00FFFFFF); convertView.invalidate();
// 화면에 표시될 View 로부터 위젯에 대한 참조 획득 viewHolder.profile_Image = (ImageView) convertView.findViewById(R.id.profile_Image); viewHolder.tv_name = (TextView) convertView.findViewById(R.id.child_name); viewHolder.tv_mobileNO = (TextView) convertView.findViewById(R.id.child_mobileNO); viewHolder.tv_officeNO = (TextView) convertView.findViewById(R.id.child_officeNO); viewHolder.chid_btn = (Button) convertView.findViewById(R.id.child_Btn);
convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); }
// PersonData 에서 position 에 위치한 데이터 참조 획득 final PesonData pesonData = arrayList.get(position);
// 아이템 내 각 위젯에 데이터 반영 // 선택된 row의 데이터를 표시한다. 표시될 view는 person_item.xml 의 각 항목을 이용 표시한다. System.out.println("imageurl==" + pesonData.getProfile_image()); if(pesonData.getProfile_image().equals("")){ final Bitmap Base_Profile = PHPComm.autoresize_decodeResource(getResources(), R.mipmap.photo_base, 160); viewHolder.profile_Image.setImageBitmap(Base_Profile); } else { final String photoURL = Value.IPADDRESS + "/photos/" + pesonData.getProfile_image(); imageLoader.DisplayImage(photoURL, viewHolder.profile_Image); }
viewHolder.tv_name.setText(pesonData.getName()); viewHolder.tv_mobileNO.setText(PhoneNumberUtils.formatNumber(pesonData.getMobileNO())); viewHolder.tv_officeNO.setText(PhoneNumberUtils.formatNumber(pesonData.getOfficeNO()));
viewHolder.chid_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {
} });
return convertView; }
// 아이템 데이터 추가를 위한 메소드 public void addItem(String profile_image, String uid, String name, String mobileNO, String officeNO){ PesonData item = new PesonData(); item.setProfile_image(profile_image); item.setUid(uid); item.setName(name); item.setMobileNO(mobileNO); item.setOfficeNO(officeNO);
arrayList.add(item); } } }
|