안드로이드 다이얼로그

http://webnautes.tistory.com/1094

만약 Unable to add window — token null is not for an application라는 오류가 난다면 getApplicationContext를 액티비티.this로 바꿔보면 효과가 있을 수도 있다. 없을 수도 있고.

Advertisements

안드로이드 json End of input at character 0 of 에러

발리로 http 통신을 하던 중에 발생. 받을 때 response가 텅 빈 blank 상태이기 때문이었다. 때문에 이 에러가 발생할 경우 response가 blank 는 아닌지 체크할 것.

출처 : https://stackoverflow.com/questions/24301521/jsonexception-end-of-input-at-character-0

You are probably getting a blank response. Its not null but the jsontext is empty. So you are getting this error and not a Nullpointer exception

Are you sending right parameters to server.Also Check url respond to POST requests or not.

 

그리드뷰 아이템 클릭 리스너 달기

//그리드뷰 롱클릭 꾸~욱 눌렀을 경우
mGrid.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> a, View v, int r,
long i) {
Log.e(“position “,String.valueOf(r));
mPosition = r;
try{
//롱클릭했을때 이벤트 주기
}
catch (Exception e) {
longclickToast();
}
return true;
}
});
//이미지 아이템 클릭햇을때
mGrid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v,
int position, long id) {
//이곳에 포지션이 그리드뷰의 아이템 번호 입니다.
//그리드 뷰에서 큰이미지로 퀵뷰를 보고 싶으시면
//이곳에서 포지션 값을 이미지 뷰어로 보내서
//인텐트로 보내서 이미지 뷰어에서 포지션 값 받아서 화면에 뿌려 주면 되겠죠.
}
});

출처: http://vissel.tistory.com/170 [비쎌의 안드로이드세상]

안드로이드 리사이클러뷰에 클릭리스너 달기 recyclerview clicklistener, longclicklistener

리사이클러뷰는 리스트뷰처럼 바로 아이템에 리스너가 달아지지 않는다. 아이템 하나하나마다 다른 반응을 나타내고 싶으면 onBindViewholder 내에 설치해야 한다.

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Viewholder> {

    private List<Information> items;
    private int itemLayout;

    public MyAdapter(List<Information> items, int itemLayout){
        this.items = items;
        this.itemLayout = itemLayout;
    }

    @Override
    public Viewholder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);
        return new Viewholder(v);
    }

    @Override
    public void onBindViewHolder(Viewholder holder, final int position) {
        Information item = items.get(position);
        holder.textView1.setText(item.Title);
        holder.textView2.setText(item.Date);

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(view.getContext(), "Recycle Click" + position, Toast.LENGTH_SHORT).show();
            }
        });

       holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
       @Override
       public boolean onLongClick(View v) {
          Toast.makeText(v.getContext(), "Recycle Click" + position, Toast.LENGTH_SHORT).show();
           return true;
       }
});
    }

    @Override
    public int getItemCount() {
        return items.size();
    }

    public class Viewholder extends RecyclerView.ViewHolder {
        public  TextView textView1;
        public TextView textView2;

        public Viewholder(View itemView) {
            super(itemView);
            textView1=(TextView) itemView.findViewById(R.id.text1);
            textView2 = (TextView) itemView.findViewById(R.id.date_row);

        }
    }
}

출처 : https://stackoverflow.com/questions/33845846/why-is-adding-an-onclicklistener-inside-onbindviewholder-of-a-recyclerview-adapt

자세히 보면 이 방법도 베스트는 아니라고 한다…. 일단 작동은 되지만.

안드로이드 리사이클러뷰 아이템 클릭 effect (ripple effect)주기

출처 : http://tutorialsbuzz.com/2015/12/android-recyclerview-item-click-listener-ripple-effect.html

xml 파일을 리스트뷰의 아이템. 의 xml layout의 최상단 레이아웃에 background로 설정하면 끝.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/listItemclick"></solid>
        </shape>
    </item>

    <!--<item>-->
        <!--<shape>-->
            <!--<solid android:color="@android:color/white"></solid>-->
        <!--</shape>-->
    <!--</item>-->
</selector>

내가 설정한 xml 파일.