노트 48 - ListView item 클릭, Dialog 표시, Dialog 선택, item 값 변경
1. 핵심: ListView 그리기 원리를 이해한다.
1) 시스템은 ListView를 그리기 전에 getCount () 방법을 사용해서 item의 개수를 가져옵니다.다음에 item을 그릴 때마다 getView 방법을 사용합니다.
2) ListView가 표시하는 데이터는 어댑터에서 전송된 데이터이기 때문에 item에서 어떤 항목의 값을 변경하려면 item에서 컨트롤의 값을 직접 변경하여 실현할 수 없다. 전송된 데이터의 값을 변경해서 실현해야 한다. ListView를 다시 그릴 때도 getView 방법을 사용하기 때문에 전송된 데이터가 변하지 않으면 다시 그릴 때 원래의 값을 복원할 수 있다.
3) 들어오는 값을 변경한 후 notify DataSetChanged () 를 호출하는 것을 잊지 마십시오.
둘째, Dialog에 표시된 값을 변경하거나 Dialog의 일부 컨트롤이 클릭 이벤트에 응답하는 등의 Dialog를 동적으로 설정할 때 Dialog에서 컨트롤을 가져와 변경하려면 Dialog를 통해 다음을 수행해야 합니다.
View view1=LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog, null);
dialog.setContentView(view1);
TextView tv1=(TextView) view1.findViewById(R.id.tv1);
tv1.setText("aaa");
그렇지 않으면 실현할 수 없다.다음은 잘못된 방법입니다.
dialog.setContentView(R.layout.dialog);
View view1=LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog, null);
TextView tv1=(TextView) view1.findViewById(R.id.tv1);
tv1.setText("aaa");
셋째, 모두 getView에서 실현된다.
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO
View view=LayoutInflater.from(MainActivity.this).inflate(R.layout.item, null);
TextView tv=(TextView) view.findViewById(R.id.tv);
tv.setText(strList.get(position));
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
<span style="white-space:pre"> </span> // TODO
final Dialog dialog=new Dialog(MainActivity.this);
View view1=LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog, null);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
dialog.setTitle("xuanze");
dialog.setContentView(view1);
dialog.setContentView(R.layout.dialog);
TextView tv1=(TextView) view1.findViewById(R.id.tv1);
TextView tv2=(TextView) view1.findViewById(R.id.tv2);
TextView tv3=(TextView) view1.findViewById(R.id.tv3);
tv2.setText("aaa");
if(position==1){
tv1.setVisibility(View.GONE);
}
tv1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO
strList.set(0, "111");
notifyDataSetChanged();
dialog.dismiss();
}
});
tv2.setOnClickListener(new OnClickListener() {
<span style="white-space:pre"> </span> @Override
<span style="white-space:pre"> </span> public void onClick(View v) {
// TODO
strList.set(1, "222");
notifyDataSetChanged();
dialog.dismiss();
}
});
}
});
return view;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.