jeudi 26 février 2015

How to make a custom clickable by index. Sounds easy huh?

I'm following this tutorial


http://ift.tt/1uTLhDs


I'm trying to make the profile photo's and the pictures posted in the post clickable.


If you visit the link you can see what it basically what it looks like.


Depending on the id of the image, I wanted to venture to a different activity. Here's what I've discovered that confusing me so much.


I've created a JSON file and saved it into a Dynamic Web Page.


"id": 1, "name": "Mark",


"id": 2, "name": "Tom",


The method (name is a textview):



name.setText(item.getName());


makes the name text view the "name" field from the JSON file.


The method:



name.setText(Integer.toString(item.getId()));


makes the name text view the "id" field from the JSON file.


What's crazy is that the values returned are a string and int variable.


So if if try



if (item.getId() == 1) {

Intent myIntent1 = new Intent(context, NameActivity.class);
myIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent1);

}



if (item.getId() == 2) {

Intent myIntent2 = new Intent(context, NameActivitySecondAttempt.class);
myIntent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent2);

}


Unfortunately, the if statement doesn't understand the different values for "name" or "id".


I have these if statements in the OnClickListener for the two views that I'm trying to click on. See the extended code below.


profilePic.setOnClickListener(new View.OnClickListener() {


feedImageView.setOnClickListener(new View.OnClickListener() {


Heres some XML



<com.pm.pmv5.listviewfeed.FeedImageView
android:id="@+id/feedImage1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:clickable="true"
android:focusable="true"
android:scaleType="fitXY"
android:visibility="visible" />

<com.android.volley.toolbox.NetworkImageView
android:id="@+id/profilePic"
android:layout_width="@dimen/feed_item_profile_pic"
android:layout_height="@dimen/feed_item_profile_pic"
android:clickable="true"
android:focusable="true"
android:scaleType="fitCenter" >
</com.android.volley.toolbox.NetworkImageView>


When the page loads the numbers or names will correctly show up in the right spot. But the i can't travel to a separate particular activity according to thats posts's name or number.


Can some one help me.


Here's How I've adjusted the class..



package com.pm.pmv5.listviewfeed.adapter;

import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.text.Html;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
import com.pm.pmv5.R;
import com.pm.pmv5.listviewfeed.FeedImageView;
import com.pm.pmv5.listviewfeed.app.AppController;
import com.pm.pmv5.listviewfeed.data.FeedItem;
import com.pm.pmv5.takeover.BoardActivity;
import com.pm.pmv5.takeover.BoardActivity2;
import com.pm.pmv5.takeover.BoardActivity3;
import com.pm.pmv5.takeover.NameActivity;
import com.pm.pmv5.takeover.StartMenuV1;
import com.pm.pmv5.takeover.StartMenuV2;
import com.pm.pmv5.takeover.StartMenuV3;

@SuppressLint("InflateParams")
public class FeedListAdapter extends BaseAdapter implements
View.OnClickListener {

private Activity activity;
private LayoutInflater inflater;
private List<FeedItem> feedItems;

Context context;
baZOOKA heyNOW;
FeedItem item;
String nueSELECTOR;
MediaPlayer mp;
NetworkImageView profilePic;
FeedImageView feedImageView;
TextView name;

ImageLoader imageLoader = AppController.getInstance().getImageLoader();

public FeedListAdapter(Activity activity, List<FeedItem> feedItems) {
this.activity = activity;
this.feedItems = feedItems;

}

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

@Override
public Object getItem(int location) {
return feedItems.get(location);
}

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

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

context = AppController.getInstance();

if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.feed_item, null);

if (imageLoader == null)
imageLoader = AppController.getInstance().getImageLoader();

name = (TextView) convertView.findViewById(R.id.name);
TextView timestamp = (TextView) convertView
.findViewById(R.id.timestamp);
TextView statusMsg = (TextView) convertView
.findViewById(R.id.txtStatusMsg);
TextView url = (TextView) convertView.findViewById(R.id.txtUrl);
profilePic = (NetworkImageView) convertView
.findViewById(R.id.profilePic);
feedImageView = (FeedImageView) convertView
.findViewById(R.id.feedImage1);

item = feedItems.get(position);

// name.setText(item.getName());

final int ok234 = feedItems.indexOf(1);
int index = feedItems.indexOf("papa"); // index = 2

// name.setText(Integer.toString(ok234));

nueSELECTOR = Integer.toString(item.getId());

name.setText(nueSELECTOR);
// Converting timestamp into x ago format
CharSequence timeAgo = DateUtils.getRelativeTimeSpanString(
Long.parseLong(item.getTimeStamp()),
System.currentTimeMillis(), DateUtils.SECOND_IN_MILLIS);
timestamp.setText(timeAgo);

// Chcek for empty status message
if (!TextUtils.isEmpty(item.getStatus())) {
statusMsg.setText(item.getStatus());
statusMsg.setVisibility(View.VISIBLE);
} else {
// status is empty, remove from view
statusMsg.setVisibility(View.GONE);
}

// Checking for null feed url
if (item.getUrl() != null) {
url.setText(Html.fromHtml("<a href=\"" + item.getUrl() + "\">"
+ item.getUrl() + "</a> "));

// Making url clickable
url.setMovementMethod(LinkMovementMethod.getInstance());
url.setVisibility(View.VISIBLE);
} else {
// url is null, remove from the view
url.setVisibility(View.GONE);
}

// user profile pic
profilePic.setImageUrl(item.getProfilePic(), imageLoader);

// Feed image
if (item.getImge() != null) {
feedImageView.setImageUrl(item.getImge(), imageLoader);
feedImageView.setVisibility(View.VISIBLE);
feedImageView
.setResponseObserver(new FeedImageView.ResponseObserver() {
@Override
public void onError() {
}

@Override
public void onSuccess() {
}
});
} else {

feedImageView.setVisibility(View.GONE);
}
profilePic.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

if (item.getId() != 1) {

name.setText(item.getName());

}

if (item.getId() == 2) {

// name.setText(item.getName());

}

}
});

feedImageView.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

switch (item.getId()) {

case 1:

mp = MediaPlayer.create(context, R.raw.cameraflash);
mp.setVolume(100, 100);
mp.start();

Intent myIntent1 = new Intent(context, NameActivity.class);
myIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent1);

break;

case 2:

mp = MediaPlayer.create(context, R.raw.cameraflash);
mp.setVolume(100, 100);
mp.start();

Intent myIntent2 = new Intent(context, StartMenuV1.class);
myIntent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent2);

break;
case 3:

mp = MediaPlayer.create(context, R.raw.cameraflash);
mp.setVolume(100, 100);
mp.start();

Intent myIntent3 = new Intent(context, StartMenuV2.class);
myIntent3.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent3);

break;
}

}
});

return convertView;

}

@Override
public void onClick(View v2) {
// TODO Auto-generated method stub
switch (v2.getId()) {
case R.id.profilePic:

break;
case R.id.feedImage1:

break;

}
}

}




Aucun commentaire:

Enregistrer un commentaire