آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آپديت كردن يك آيتم در ليست ويوو

sadra  11 سال پیش  10 سال پیش
0 0

به يه مشكل برخوردم، ميخوام وقتي مقدار يكي از آيتم ها در ليست ويوو تغيير كرد، اون مقدار در ليست ويوو آپديت بشه، بدون اينكه ليست وئوو بخواد دوباره بارگذاري بشه يا اسكرول بشه، كسي راحي بلده؟

+1 0
این آیتم رو دستی تغییر میدین یا از سمت سرور تغییر می کنه؟ اگه دستی تغییر میدین، آیا دکمه دارین واسه اعمال تغییرات؟ میتونین هنگام اعمال تغییرات، آرایه رو clean و لیست رو notify کنید (11 سال پیش)
+1 0
سلام. میتونید. از یک thread استفاده کنید که هر وقت تغییری اتفاق افتاد arraylist ی که از اون لیست ویو داره خونده میشه رو آبدیت کنه و اون رو notify کنه. (11 سال پیش)
0 0
mohammad جان اين threat گه گفتي رو چجوري بسازم؟ يه سمپل ميشه بدي؟ (11 سال پیش)
0 0
احسان عزيز، تغيير كه نميكنه اما اكتيويتي كه ران ميشه خوب بلافاصله آرايه پر ميشه و ليست ويئو بالا مياد اما تا عكسا لود بشه طولميكشه ديگه. ميخوام وتي كار عكسا تموم شد اين imageview توي آرايه رفرش بشه به مقدار جديدي كه گرفته (11 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
Mr7  11 سال پیش
+2 0

 
 وقتی آرایه تغییر بکنه لیست ویو تغییر میکنه بعد از 5 ثانیه .

Thread thread = new Thread(new Runnable() {

@Override
public void run() {

while (true) {
try {

Thread.sleep(5000);
G.HANDLER.post(new Runnable() {

@Override
public void run() {

adapter.notifyDataSetChanged();

}
});

}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

});

thread.start();



0 0
مرشس ولي اينو كجا بايد بگذارم؟ توي خود GetView ؟ (11 سال پیش)
0 0
دقيقا اينو باس كجا بگذارم؟ (11 سال پیش)
+1 0
توی اون اکتیویتی که لیست ویو توش گذاشتی... (11 سال پیش)
0 0
ايني كه گفتيدو گذاشتم اما چندتا اررور ميده! (11 سال پیش)
پاسخ به سوال 
sadra  11 سال پیش
0 0

ببينيد اين كد منه:

 com.example.blog

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Arrays;
import android.support.v7.app.ActionBarActivity;
import android.text.Html;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class Magazine extends ActionBarActivity {

private ListView lv;
String[] id,title,content,commect_c,pic,cat,vc,lc;
String tid,ttitle,tconent,tcomment,tpic,tcat,tvc,tlc;
private int cpage=1,srch=0;
private int count;
private double apage;
private TextView tpage;
private ImageButton next_btn,rev_btn;
private String res="";
private Bitmap[] img;
private SearchView searchv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.magazine_layout);

tpage=(TextView) findViewById(R.id.magazine_statuts_txt);
next_btn=(ImageButton) findViewById(R.id.mag_next_btn);
rev_btn=(ImageButton) findViewById(R.id.mag_rev_btn);
lv=(ListView) findViewById(R.id.mag_list);
lv.setDivider(null);

lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long idt) {
Intent i=new Intent(Magazine.this,Mag_post_data.class);
i.putExtra("id",Integer.parseInt(id[position]));
startActivity(i);
}
});

next_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(cpage==apage){
Toast.makeText(getApplication(),"آخرين صفحه",Toast.LENGTH_LONG).show();
}else{
cpage++;
new getpost().execute();
}
}
});

rev_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(cpage==1){
Toast.makeText(getApplication(),"اولين صفحه",Toast.LENGTH_LONG).show();
}else{
cpage--;
new getpost().execute();
}
}
});

new getpost().execute();


}

private void makearray(int c){

id=new String[c];
title=new String[c];
content=new String[c];
pic=new String[c];
img=new Bitmap[c];
commect_c=new String[c];
cat=new String[c];
vc=new String[c];
lc=new String[c];

Arrays.fill(title, "");

Bitmap img_temp=BitmapFactory.decodeResource(getResources(), R.drawable.no_img_reco);
Arrays.fill(img, img_temp);

}
//---------------------------in method moshakhasat va joziate posto migire-----------------------------
public class getpost extends AsyncTask{

ProgressDialog pd;

protected void onPreExecute() {
super.onPreExecute();
pd=new ProgressDialog(Magazine.this);
pd.setCancelable(false);
pd.setMessage("درحال بارگذاري");
pd.getWindow().setGravity(Gravity.CENTER);
pd.show();

};

@Override
protected Object doInBackground(Object... arg0) {

try{
String data=URLEncoder.encode("page","utf8")+"="+URLEncoder.encode(cpage+"","utf8");
URL link=new URL("http://192.168.1.2/drjibi_adc/webs/get_list_p.php");
URLConnection connect=link.openConnection();

//send data
connect.setDoOutput(true);
OutputStreamWriter wr=new OutputStreamWriter(connect.getOutputStream());
wr.write(data);
wr.flush();

BufferedReader reader=new BufferedReader(new InputStreamReader(connect.getInputStream()));

StringBuilder sb=new StringBuilder();

String line=null;

while((line=reader.readLine()) != null){
sb.append(line);
}

res=sb.toString();

for(int y=0;y<4;y++){
if(res.charAt(y)=='☻'){
count=Integer.parseInt(res.substring(1, y));
res=res.substring(y+1);
break;
}
}

for(int y=0;y<4;y++){
if(res.charAt(y)=='☻'){
apage=Integer.parseInt(res.substring(0, y));
res=res.substring(y+1);
break;
}
}


makearray(count);

int f=0,c=0;
for(int i=0;i<res.length();i++){
if(res.charAt(i)=='☻'){
String temp=res.substring(f,i);

if(c==0){
tid=temp;
}
if(c==1){
ttitle=temp;
}
if(c==2){
tconent=temp;
}
if(c==3){
tpic=temp;
}
if(c==4){
tcomment=temp;
}
if(c==5){
tvc=temp;
}
if(c==6){
tlc=temp;
}
if(c==7){
tcat=temp;

for(int t=0;t<count;t++){
if(title[t].equals("")){
id[t]=tid;
title[t]=ttitle;
content[t]=tconent;
commect_c[t]=tcomment;
vc[t]=tvc;
lc[t]=tlc;
cat[t]=tcat;
new getimage(tpic, t).execute();
break;
}
}
c=-1;
}
f=i+1; c+=1;

}
}
Log.i("error","error nadarim");

}catch(Exception e){res=e.toString();
Log.i("error",e.toString());}


return "";
}

@Override
protected void onPostExecute(Object result) {
super.onPostExecute(result);
pd.dismiss();

apage=Math.ceil(apage/10);
tpage.setText("صفحه "+cpage+" از "+(int)apage);

lv.setAdapter(new AA());


}




}
//---------------------------------in method ax ro migire mirize tu arrayeha va mid ebe mthode get poste balai ------------
public class getimage extends AsyncTask<String, Void, Bitmap>{
private String url;
private int P;
public getimage(String u,int p){
url=u;
P=p;
}

@Override
protected Bitmap doInBackground(String... arg0) {

Bitmap temp=null;
try{
url=url.replace("uploads", "http://192.168.1.2/drjibi_adc/uploads"); //just for local host
InputStream in=new java.net.URL(url).openStream();
temp=BitmapFactory.decodeStream(in);
}catch(Exception e){

}
return temp;
}

@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);

img[P]=result;
lv.setAdapter(new AA());
}
}

//classe adaptore listview
class AA extends ArrayAdapter<String>{


public AA(){
super(Magazine.this, R.layout.row_magazine, title);
}

@Override
public void notifyDataSetChanged() {
super.notifyDataSetChanged();

}

@Override
public View getView(int position,View convertView, ViewGroup parent) {
LayoutInflater Inf= (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row=Inf.inflate(R.layout.row_magazine, parent, false);

TextView p_cat = (TextView) row.findViewById(R.id.post_l_cat_txt);
TextView p_title = (TextView) row.findViewById(R.id.post_l_title_txt);
TextView p_cont = (TextView) row.findViewById(R.id.post_l_cont_txt);
TextView p_comment = (TextView) row.findViewById(R.id.mag_c_c);
TextView p_view = (TextView) row.findViewById(R.id.mag_v_c);
TextView p_like = (TextView) row.findViewById(R.id.mag_l_c);
ImageView p_img = (ImageView) row.findViewById(R.id.post_img);


String con=Html.fromHtml(content[position]).toString().replace("\n", " ");
if(con.length()>60){con=con.substring(0, 60);}

p_title.setText(title[position]);
p_cat.setText(cat[position]);
p_cont.setText(con+"...");
p_cont.setMaxLines(1);
p_comment.setText(commect_c[position]);
p_view.setText(vc[position]);
p_like.setText(lc[position]);
p_img.setImageBitmap(img[position]);




return (row);
}


}
}

الان روي اين بخوام اوني كه ميگيد رو، چجوري بايد اعمال كنم؟

+1 0
در همون oncreat بنویسش ممکنه بخاطر پرایوت کردن لیست ویو باشه اگه ارورات compiletime نیستن (11 سال پیش)
0 0
شما كدي كه من نوشتم رو ديديد؟ واسه اون چه راه حلي هست؟ (11 سال پیش)
پاسخ به سوال 
amirhossein1376  10 سال پیش
+1 0

ببخشید من اینجا جواب رو میذارم هر چند سوال قدیمیه ولی احتمالا به درد بعضی ها بخوره

فقط کدها رو کامل میذارم که مشخص تر باشه.شاید اصلا نیاز نبود ولی خوب بهتره(دقیقا همون کدهای پروژه استاد رو باهاش کار میکنیم)

کلاس StructNote:


public class StructNote {
public String title;
public String description;
public boolean done;

}

کلاس AdapterNote:


import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;

import java.util.ArrayList;

public class AdapterNote extends ArrayAdapter<StructNote> {
public AdapterNote(ArrayList<StructNote> array) {
super(G.context,R.layout.adapter_note , array);
}


private static class ViewHolder{
public ViewHolder(View view){

}

public void fill(ArrayAdapter<StructNote> adapter , StructNote item , int position){

}
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructNote item = getItem(position);
if(convertView == null){
convertView = G.inflater.inflate(R.layout.adapter_note , parent , false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}

holder.fill(this , item , position);
return convertView;
}
}

کلاس G:


import android.app.Application;
import android.content.Context;
import android.view.LayoutInflater;
import android.widget.ArrayAdapter;

public class G extends Application {

public static Context context;
public static LayoutInflater inflater;
public static ArrayAdapter<StructNote> adapter;

@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
}

کلاس MainActivity:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

public ArrayList<StructNote> notes = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);


G.adapter = new AdapterNote(notes);
ListView lstContent = (ListView) findViewById(R.id.lstContent);
lstContent.setDivider(null);
lstContent.setAdapter(G.adapter);

for (int i = 1; i < 20; i++) {
StructNote note = new StructNote();
note.title = "title#" + i;
note.description = "desc#" + i;
note.done = true;
notes.add(note);
}

G.adapter.notifyDataSetChanged();


Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(10000);
G.adapter.getItem(15) // خروجی از جنس StructNote دارد
.description = "t";

G.adapter.notifyDataSetChanged();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});

thread.start();

}

}

 

با این کار بعد 10 ثانیه دسکریپشن آیتم 15 تغییر میکنه


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .