2013. 6. 25. 15:48

There are no predefined Adapters which will render a HashMap. I suggest creating your own Adapter by extending BaseAdapter.

Edit: It is posible to use HashMap with and extended BaseAdapter, here's an(untested) example:

public class HashMapAdapter extends BaseAdapter {

    private HashMap<String, String> mData = new HashMap<String, String>();
    private String[] mKeys;
    public HashMapAdapter(HashMap<String, String> data){
        mData  = data;
        mKeys = mData.keySet().toArray(new String[data.size()]);
    }

    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        return mData.get(mKeys[position]);
    }

    @Override
    public long getItemId(int arg0) {
        return arg0;
    }

    @Override
    public View getView(int pos, View convertView, ViewGroup parent) {
        String key = mKeys[pos];
        String Value = getItem(pos).toString();

        //do your view stuff here

        return convertView;EDIT
    }
}

This comes with the following caveat, the order of the items is not guaranteed to be the same order you added them. Writing this example has made me realize; Don't use HashMap in an adapter :)

'Android > 개발팁' 카테고리의 다른 글

[Android] keyboard 감지  (0) 2013.07.08
How to replace R.drawable.“someString”  (0) 2013.06.25
Intent 로 gallery 의 특정 폴더 띄우기.  (1) 2013.05.31
Android log 작성법  (0) 2013.05.22
패키지 네이밍 !  (0) 2013.05.07
Posted by hoonihoon
2013. 6. 14. 11:21

Resources res = getResources();
String[] arrString = res.getStringArray(R.array.myarrdata);
 List<String> mArrayList = new ArrayList<String>();

  for(String s:arrString){
   mArrayList.add(s);
 }

Posted by hoonihoon
2013. 5. 31. 17:09


Uri targetUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 

 String targetDir = Environment.getExternalStorageDirectory().toString() + "/saturday9"; 


targetUri = targetUri.buildUpon().appendQueryParameter("bucketId",String.valueOf(targetDir.toLowerCase().hashCode())).build();


 Log.d("kth","targetUri : "+targetUri);

 Intent intent = new Intent(Intent.ACTION_VIEW, targetUri);

 startActivity(intent);



결과:

05-31 17:07:04.843: D/kth(14184): targetUri : content://media/external/images/media?bucketId=1443034118





Posted by hoonihoon
2013. 5. 22. 11:48

로그는 ERROR, WARN, INFO, VERBOSE의 다섯 개 레벨로 나눌 수 있다.
VERBOSE로 설정된 로그(Log.v)는 개발용 컴파일이 아닌 배포용 패키지를 만들 때 컴파일 단계에서 빠져버린다.

디버그 레벨 로그는 컴파일은 되지만 런타임 시에 빠지므로 절대 런타임시에 출력될 일은 없다.
나머지 에러나 WARNING, INFO 레벨 로그는 개발시나 런타임시나 출력이 된다

아주 중요한 정보만 ERROR, WARN, INFO레벨 로그로 남기고, 
가능한 개발시에는 VERBOSE 레벨을 사용하면 런타임 시 부하를 줄일 수 있다.



- 로그 남기기
안드로이드에서 로그를 남기기 위해서는 android.util.Log 클래스를 사용하면 된다.

[로그 레벨]
Error : 가장 심각한 문제가 발생했을때 남기는 로그 
ex) Log.e("tag", "error message");

Warning : 심각하지는 않지만 나중에라도 꼭 살펴보아야 할 문제가 발생 했을때 남기는 로그 
ex) Log.w("tag","warning message");

Information : 어떤 처리를 하면서 발생하는 진행 과정 등을 모니터링하기 위한 목적으로 남기는 로그
ex) Log.i("tag", "information message");

Debugging : 디버깅의 목적으로 문제 발생 가능성이 있는 곳에 남기는 로그
ex) Log.d("tag", "debugging message");

Verbose : 동작 여부를 최대한 자세히 살펴볼 목적으로 남기는 로그
ex) Log.v("tag", "verbose message"); 

import android.app.*;

import android.os.*;

import android.util.*;


public class LogDemoEx1Activity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        Log.e("tag", "error message");

        Log.w("tag", "warning message");

        Log.i("tag", "information message");

        Log.d("tag", "debugging message");

        Log.v("tag", "verbose message");

    }

}


결과

 

tag 이름을 이용하여 tag 필터링 기능을 사용하면 원하는 로그만 볼 수 있다.

[출처] Android Log 알고 쓰자..|작성자 ezmo01


출저 : http://blog.naver.com/PostView.nhn?blogId=ezmo01&logNo=110126998037



Posted by hoonihoon
2013. 5. 7. 09:23

회사

 com(회사) - 회사이름 - 어플이름

개인

 pe - 개인이름(진짜 이름이던 닉네임이던) - 어플이름

Posted by hoonihoon
2013. 5. 2. 19:28

ScrollView 안에 EditText 의 scroll 이 먹지 않는 문제 

After struggling with that problem for quite some time, I've found a solution that seems to work without being too ugly. First, make sure that whatever ViewGroup (directly) contains your EditText has DescendantFocusability set to "Before Descendants," Focusable set to "true" and FocusableInTouchMode set to "true." This will not be the ScrollView itself, but the layout inside where you have your various views. Next add an onTouchListener to your ScrollView that removes focus from the EditText whenever it is touched, like so:

ScrollView scroll = (ScrollView)findViewById(R.id.scrollView1);
scroll.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (myEditText.hasFocus()) {
            myEditText.clearFocus();
        }
        return false;
    }
});

Tell me if that doesn't fix it. What should happen is that the Layout gets focus instead of the EditText, so no scrolling should happen.


이외에 하나더있음. 정리중...

'Android > 개발팁' 카테고리의 다른 글

Android log 작성법  (0) 2013.05.22
패키지 네이밍 !  (0) 2013.05.07
EditText 테두리 없애기  (0) 2013.02.26
Android click 과 longclick 구분 방법  (0) 2013.01.08
3G, WIFI 연결 상태 확인하기.  (0) 2012.12.07
Posted by hoonihoon
2013. 3. 18. 13:17
Posted by hoonihoon
2013. 2. 26. 17:41

 android:background="@null"

Posted by hoonihoon