使用Firebase。我正在尝试使用Firebase和自定义列表视图填充图像视图,Textview。当用户从列表中选择一个项目时,应该将Firebase项目的ID保存到我的数据库的用户部分。
所有项目在列表视图中正确填充,但是当我选择一个项目时,只有位置0和5实际上在起作用,其余项目始终返回pos 1-5循环返回。能否请您看看我的代码n告诉我我做错了什么,谢谢:)
private void Display_Images() {
ListView listOfImages = findViewById(R.id.avatar_list);
listOfImages.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
FirebaseAuth mAuth =FirebaseAuth.getInstance();
String userid = mAuth.getUid();
avatar_id = AVATAR_ID.get(position);
DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("Users").child(userid);
db.child("avatarID").setValue(avatar_id);
finish();
}
});
adapter = new FirebaseListAdapter<Image_Selector>(this, Image_Selector.class,
R.layout.avatars, FirebaseDatabase.getInstance().getReference().child("Avatars")) {
@Override
protected void populateView(View v, Image_Selector model, int position) {
imageView = v.findViewById(R.id.image);
tv = v.findViewById(R.id.tvavatar);
AVATAR_ID.add(model.getID());
tv.setText(model.getName());
Glide.with(getBaseContext()).load(model.getUrl()).into(imageView);
}
};
listOfImages.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)
这是我的数据库
"Avatars" : {
"Batman1" …Run Code Online (Sandbox Code Playgroud) 嗨,大家好,尝试将应用上传到Google Play,但仍然收到此错误
上传失败
您上传了一个APK或Android应用程序捆绑包,该捆绑包在其清单中指定了一个动作模式文档,但目前尚不允许动作模式。如果您是Beta计划的一部分,则需要将您的开发者帐户列入白名单。
有人可以解释一下我做错了什么吗。过去,我上传的应用从未遇到过此错误。
这是我的清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my package name">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:name="my app name"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="My main activity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" />
<activity android:name="Genres" />
<activity android:name="home" />
<activity
android:name="playerlayout"
android:configChanges="orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout"
android:hardwareAccelerated="true" />
<meta-data android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="my package name.CastOptionsProvider" />
<activity android:name="layouts" />
<activity android:name="layouts" />
<activity android:name="layouts" />
<activity android:name="layouts" />
<activity android:name="my layouts" />
<activity android:name="my layouts" />
<activity android:name="my layouts" />
<activity android:name="my layouts" />
<activity android:name="my …Run Code Online (Sandbox Code Playgroud) 我的数据库中有一个用户节点,用于存储有关用户的任何信息。然后在我的应用程序中我必须对按钮进行图像处理:
mlike = root.findViewById(R.id.btn_like);
mdislike = root.findViewById(R.id.btn_dislike);
mlike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
likeStations();
}
});
mdislike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dislikeStations();
}
});
private void dislikeStations(){
db = FirebaseDatabase.getInstance();
ref = db.getReference().child("Users").child(user);
DatabaseReference likesRef = FirebaseDatabase.getInstance().getReference().child("STATIONS").child(station);
likesRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Boolean dislike_snapshot = dataSnapshot.child("downvote").getValue(Boolean.class);
likeref.child("downvote").setValue(+1)
}
}
Run Code Online (Sandbox Code Playgroud)
对于 likeStations() 方法来说,情况几乎是一样的。我想知道的是如何确保他们只能单击按钮一次,或者如果他们在单击不喜欢后单击“喜欢”,则会在“喜欢”上添加 1 之前从“不喜欢”中删除 1。
我知道它将使用用户节点,因此我将其添加到问题中。
我有一个带有看起来像这样的树的 firebase 数据库
tvthemetunes
airwolf value "url to air wolftheme"
eastenders value "url to eastenders"
knight rider value "url to nightrider"
Run Code Online (Sandbox Code Playgroud)
等等...
在我的应用程序中,用户下载项目,当项目下载时,将从 url 播放电视主题。当单个项目的值事件时,我可以让它正常工作。我希望它从列表中随机选择一个值。怎样才能做到这一点?
编辑可以使用回收视图方法,因为我的应用程序不包含任何
这是我的单个项目代码
protected Dialog onCreateDialog(int id) {
switch (id) {
case progress_bar_type:
//Here is where i play the theme
getthemetune();
pDialog = new ProgressDialog(c);
pDialog.setTitle(MY Title);
pDialog.setMessage(MY Message);
pDialog.setIcon(R.mipmap.ic_launcher);
pDialog.setIndeterminate(false);
pDialog.setMax(100);
pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pDialog.setCancelable(false);
pDialog.show();
return pDialog;
default:
return null;
}
}
private void getthemetune(){
mthemetuneref = FirebaseDatabase.getInstance();
DatabaseReference ref = mthemetuneref.getReference().child(MYREF);
ref.child("airwolf").addValueEventListener(new ValueEventListener() {
@Override …Run Code Online (Sandbox Code Playgroud) 大家好,正在使用 android 版的 youtube api。我已经把一切都设置好了并且可以工作了。我使用我的 firebase 数据库以列表的形式将所有相关信息发送到我的应用程序。列表显示一切都很好,视频从列表中播放。并进入全屏,好吧..但如果我想在没有任何反应后单击列表中的另一个视频。所以我想我必须停止并清除我的 YouTubePlayerView 但我不知道该怎么做
这就是我从 firebase 获取字符串的方式
Dl_Strings dlStrings = dataSnapshot.getValue(Dl_Strings.class);
Downloadscount.add(" " + String.valueOf(dlStrings.downloads));
AppNameList.add(dlStrings.name);
urlList.add(dlStrings.url);
Run Code Online (Sandbox Code Playgroud)
这是我获取网址并将其添加到我的 YouTube 播放器的地方
mlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
urlmain = urlList.get(i).toString();
tag = TAGGER.get(i).toString();
App_DownLoadCounter();
YouTubePlayerView myoutubeplayerView = (YouTubePlayerView) ((Activity)mContext).findViewById(R.id.youtube);
YouTubePlayer.OnInitializedListener mOninitial;
mOninitial = new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.loadVideo(urlmain);
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
} …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的数据库:
{
firstitem : {
"name" : "first_item_name",
"date" : "29/11/2018",
"user" : "random user",
"url" : "My Url",
"tag" : "firstitem"
},
seconditem : {
"name" : "second_item_name",
"date" : "20/11/2018"
"user" : "another user",
"url" : "a url",
"tag" : "seconditem"
},
thirditem : {
"name" : "third_item_name",
"date" : "20/11/2017"
"user" : "another user",
"url" : "a url",
"tag" : "thirditem"
}
ect....
}
Run Code Online (Sandbox Code Playgroud)
我希望能够选择按日期排序,从最新开始,降到最旧。我怎样才能做到这一点?
这是我目前调用 firebase 字符串的方法:
if (dataSnapshot.exists()) {
Log.i("Event", "Added");
Firebase_Strings dlStrings = dataSnapshot.getValue(Firebase_Strings.class); …Run Code Online (Sandbox Code Playgroud)