2016-04-01 4 views
-2

У меня есть представление списка, которое приводит номера из базы данных. Мне нужно умножить эти числа и получить общее количество всех номеров из моего списка. Но проблема в том, что TextView, где я должен установить общее количество, находится в основном действии, а не на адаптере. Как я могу отправить общее количество от адаптера к основному виду деятельности? Можно ли использовать загрузчик?Адаптер ListView и MainActivity

У меня есть это в ListViewAdapter.java

public class ListViewAdapter extends BaseAdapter{ 

public ArrayList<HashMap<String, String>> list; 

Activity activity; 
int contador = 0; 
public ListViewAdapter(Activity activity, ArrayList<HashMap<String, String>> list){ 
    super(); 
    this.activity = activity; 
    this.list = list; 

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

@Override 
public Object getItem(int position) { 
    return list.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return 0; 
} 
private class ViewHolder { 
TextView name; 
TextView marc, cant, prec;} 

@Override 

public View getView(int position, View convertView, ViewGroup parent) { 

    final ViewHolder holder; 
    LayoutInflater inflater = activity.getLayoutInflater(); 
    if (convertView == null){ 
     convertView = inflater.inflate(R.layout.list_colum, null); 
     holder = new ViewHolder(); 

     holder.name = (TextView) convertView.findViewById(R.id.name); 
     holder.marc = (TextView) convertView.findViewById(R.id.marc); 
     holder.cant = (TextView) convertView.findViewById(R.id.cant); 
     holder.prec = (TextView) convertView.findViewById(R.id.prec); 
     convertView.setTag(holder); 
    } 
    else{ 

     holder=(ViewHolder) convertView.getTag(); 

    } 

    HashMap<String, String> map = list.get(position); 
    holder.name.setText(map.get(FIRST_COLUMN)); 
    holder.marc.setText(map.get(SECOND_COLUMN)); 
    holder.prec.setText(map.get(THIRD_COLUMN)); 
    holder.cant.setText(map.get(FOURTH_COLUMN)); 



    return convertView; 

} 

И это в MainActivity

public class MAinActivity extends AppCompatActivity { 
private ArrayList<HashMap<String, String>> list; 
HashMap<String, String> temp = new HashMap<String, String>(); 



private Button scanBtn; 
private TextView total; 

ListView listView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    list = new ArrayList<HashMap<String, String>>(); 


    setContentView(R.layout.MainActivity); 

    total = (TextView)findViewById(R.id.total); //this is the TextView where I have to put the result coming from the adapter. 



} 


public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    listView = (ListView)findViewById(R.id.listacompras); 


    ListViewAdapter adapter = new ListViewAdapter(this,list); 
    listView.setAdapter(adapter); 



} 
+0

Используйте широковещательную радиостанцию. –

ответ

0

вы можете достичь его таким образом.

Создать метод в вашей основной деятельности, как этот

public updateTextView(String text){ 
    totla.setText(text); 
} 

и от адаптера вы можете установить текст как этот

((MAinActivity) activity).updateTextView("New text From Adapter"); 
+0

Боже мой! Это было так просто! Спасибо Mustanser lqbal! –

+0

вы можете принять ответ. если это ответит на ваш вопрос. –

+0

Да. Конечно! Благодаря! –

0

Или, вы можете добавить интерфейс в вашем ListViewAdapter

public class ListViewAdapter ...{ 
    public interface Listener{ 
     public void updateTotal(int total); 
    } 
    // also add a setter method for mListener 
    Listener mListener; 


    .... 
    // call mListener.updateTotal() to show updated total 
} 

Затем реализовать интерфейс прослушивателя в вашем MainActivity

public class MainActivity extends AppCompatActivity implements ListViewAdapter.Listener { 
    ... 

    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     listViewAdapter.setListener(this); 
    } 

    public void updateTotal(int total){ 
     // set total here 
    } 
} 

Это скелет кода. Вам нужно будет адаптировать его к вашему коду, чтобы он работал.

Удача :)

+0

Боже мой! Это было так просто! Большое спасибо skangmy! –

Смежные вопросы